oprn/read/write/close系统函数
??? open系列是 POSIX 定義的,是UNIX系統里的system call,只能用在 POSIX 的操作系統上。使用open系列函數需要"#include <fcntl.h>".
基于文件描述符的輸入輸出函數:
?? open:打開一個文件,并指定訪問該文件的方式,調用成功后返回一個文件描述符。
?? creat:打開一個文件,如果該文件不存在,則創建它,調用成功后返回一個文件描述符。
?? close:關閉文件,進程對文件所加的鎖全都被釋放。
?? read:從文件描述符對應的文件中讀取數據,調用成功后返回讀出的字節數。
?? write:向文件描述符對應的文件中寫入數據,調用成功后返回寫入的字節數。
?? ftruncate:把文件描述符對應的文件縮短到指定的長度,調用成功后返回0。
?? lseek:在文件描述符對應的文件里把文件指針設定到指定的位置,調用成功后返回新指針的位置。
?? fsync:將所有已寫入文件中的數據真正寫到磁盤或其他下層設備上,調用成功后返回0。
?? fstat:返回文件描述符對應的文件的相關信息,把結果保存在struct stat中,調用成功后返回0。
?? fchown:改變與打開文件相關聯的所有者和所有組,調用成功后返回0。
?? fchmod:把文件描述符對應的文件的權限位改為指定的八進制模式,調用成功后返回0。
?? flock:用于向文件描述符對應的文件施加建議性鎖,調用成功后返回0。
?? fcntl:既能施加建議性鎖也能施加強制性鎖,能建立記錄鎖、讀取鎖和寫入鎖,調用成功后返回0。
?? dup:復制文件描述符,返回沒使用的文件描述符中最小的編號。
?? dup2:由用戶指定返回的文件描述符的值,用來重新打開或重定向一個文件描述符。
?? select:同時從多個文件描述符讀取數據或向多個文件描述符寫入數據。
文件描述符的優點:兼容POSIX標準,許多系統調用都依賴于它。
文件描述符的缺點:不能移植到UNIX以外的系統上去,也不直觀。
1)write
#include <unistd.h>
size_t write(int fildes,const void *buf,size_t nbytes);
參數說明:
??? fildes:與文件相對應的文件描述符,可通過調用open函數獲取
??? buf:存放將寫入文件的數據,可以是字符串,也可是其他數據。其中buf是指向字符串的指針
??? nbytes:需寫進文件的字節數
返回值:
??? -1:寫入失敗
??? 0:寫入0個字節
??? x:已寫入x個字節
2)read
#include <unistd.h>
size_t read(int fildes,char *buf,size_t nbytes);
參數說明:
??? fildes:文件描述符
??? buf:存放從文件中讀取的數據
??? nbytes:希望讀取的直接數
返回值:
??? -1:讀取失敗
??? 0:讀取0個字節
??? x:已讀取x個字節
3)open
參數說明:
??? path:文件存放路徑;
??? oflags:打開方式。取值如下:
??? O_RDONLY:以只讀方式打開,O_WRONLY:以只寫方式打開,O_RDWR:以讀寫方式打開
??? oflages參數中還包括下列可選模式的組合(用按位或操作)
??? O_APPEND:把寫入數據追加在文件的末尾
??? O_TRUNC:把文件長度設為0,丟棄已有的內容
??? O_CREAT:如果需要,就按參數mode中給出的訪問模式創建文件
??? O_EXCL:已O_CREAT一起使用,確保調用者創建出文件
4)close
#include <unistd.h>
int close(int fildes);
參數:
fildes:文件描述符
返回:
success:0
fail:-1
?
總結
以上是生活随笔為你收集整理的oprn/read/write/close系统函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电子商业汇票系统 ECDS 银清科技的
- 下一篇: 以太坊(Ethereum) - Gana