1)open函數:以特定的方式打開一個文件;
? ? ? ? ? ? ? ? 頭文件:sys/type.h? sys/stat.h? ?fcntl.h
? ? ? ? ? ? ? ? 返回值:錯誤則返回-1,正確則返回文件描述符(int類型,范圍為3~1023,文件的標號)
? ? ? ? ? ? ? ? 函數原型:int open(const? char *pathname,int flags)?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int open(const char *pathname,int flags,mode_t mode)
? ? ? ? ? ? ? ?flag必選項:O_WRONLY,O_RDONLY,O_RDWR;
? ? ? ? ? ? ? ? flag可選項:O_APPEND(追加),O_CREAT(創建,需要指定文件的權限,創建的文件權限=設定的權限-? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?umask),O_EXCL(如果文件存在且指定O_CREAT,則出錯), O_TRUNC(文件存在截斷為0),O_NONBLOCK;
?2)close函數:關閉文件
? ? ? ? ? ? ? ? 頭文件:unistd.h
? ? ? ? ? ? ? ? 返回值:錯誤(-1),正確(0);
? ? ? ? ? ? ? ? 函數原型:int close(int fd);
? ? ? ? ? ? ? ? fd:文件描述符;
?3)read函數:從文件中讀取數據到指定數據緩沖區
? ? ? ? ? ? ? ? ?頭文件:unistd.h
? ? ? ? ? ? ? ? ?返回值:文件讀完(0),讀取的字符串(>0),讀取失敗(-1)
? ? ? ? ? ? ? ? ?函數原型:ssize_t? read(int fd,void? *buffer,size_t count);
? ? ? ? ? ? ? ? ? fd:文件描述符;buffer:數據緩存區;count:讀取的數據大小;
?4)write函數:將數據到指定文件中
? ? ? ? ? ? ? ? ?頭文件:unistd.h
? ? ? ? ? ? ? ? ?返回值:寫入的數據大仙(>0),寫入失敗(-1)
? ? ? ? ? ? ? ? ?函數原型:ssize_t? read(int fd,const void? *buffer,size_t count);
? ? ? ? ? ? ? ? ? fd:文件描述符;buffer:待寫入的數據;count:讀取的數據大小;
5)lseek函數:修改文件的讀寫位置,應用于獲取文件長度,拓展文件空間(其后必須接一個寫入函數)
? ? ? ? ? ? ? ? 頭文件:sys/type.h? unistd.h
? ? ? ? ? ? ? ? 返回:如果成功返回距離起始位置的偏移量,失敗返回-1;
? ? ? ? ? ? ? ? 函數原型:off_t lseek(int? fd,off_t offset,int whence);
? ? ? ? ? ? ? ?fd:文件描述符,offset:偏移量,whence:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?SEEK_SET(偏移到offset地方,相對于文件頭)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?SEEK_CUR(偏移到當前位置+offset)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?SEEK_END(偏移到文件尾+offset);? ? ? ?