linux文件编程(2)——系统文件描述符、动静态文件、块设备介绍
生活随笔
收集整理的這篇文章主要介紹了
linux文件编程(2)——系统文件描述符、动静态文件、块设备介绍
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
參考:linux文件編程(2)——文件操作原理簡述之文件描述符、動靜態(tài)文件、塊設(shè)備
作者:丶PURSUING
發(fā)布時間: 2021-04-09 11:14:12
網(wǎng)址:https://blog.csdn.net/weixin_44742824/article/details/115209312
目錄
- 系統(tǒng)占用的文件描述符
- 系統(tǒng)文件描述符使用示例
- 靜態(tài)文件與動態(tài)文件
系統(tǒng)占用的文件描述符
| 標(biāo)準(zhǔn)輸入 | STDIN_FILENO | 0 | read(0,buf,255) | 從標(biāo)準(zhǔn)輸入(鍵盤)的地方讀取255個字節(jié)存放到buf |
| 標(biāo)準(zhǔn)輸出 | STDOUT_FILENO | 1 | write(1,buf,255) | 將buf中的255個字節(jié)寫入到標(biāo)準(zhǔn)輸出(shell,屏幕) |
| 標(biāo)準(zhǔn)錯誤 | STDERR_FILENO | 2 | - | 文件出錯時的錯誤信息可以放到標(biāo)準(zhǔn)錯誤里面打印(工程做大時),相當(dāng)于往2中扔垃圾 |
文件描述符的作用域僅為當(dāng)前進(jìn)程
系統(tǒng)文件描述符使用示例
#include <unistd.h> #include <stdlib.h>int main() {char* buf = (char* )malloc(128);//從標(biāo)準(zhǔn)輸入中讀取read(0,buf,128);//打印到標(biāo)準(zhǔn)輸出中write(1,buf,128);return 0; }運行結(jié)果:
靜態(tài)文件與動態(tài)文件
靜態(tài)文件:存放于磁盤,未被打開的文件
動態(tài)文件:當(dāng)使用open后,在linux內(nèi)核會產(chǎn)生一個結(jié)構(gòu)體來記錄文件的信息,例如fd,buf,信息節(jié)點.此時的read,write都是對動態(tài)文件進(jìn)行操作,當(dāng)close時,才把緩存區(qū)所有的數(shù)據(jù)寫回磁盤中。
為什么不直接操作塊設(shè)備(靜態(tài)文件)
塊設(shè)備本身讀寫不靈活,按照塊來讀寫,而內(nèi)存是按照字節(jié)單位操作的.例如一個塊中存放著20個字節(jié),想修改其中的一個字節(jié),用塊就無法修改.
總結(jié)
以上是生活随笔為你收集整理的linux文件编程(2)——系统文件描述符、动静态文件、块设备介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转:pysqlite笔记
- 下一篇: linux文件编程(1)—— open、