man手冊
- 通過man手冊可以獲取詳細的Linux操作命令共有8章,查詢使用
man ls
即可查詢ls的相應命令,也可以使用相應的章節man 2 open
查詢第二章的open如何使用。
常用文件IO函數
功能 | 函數 | 描述 | 實例 |
---|---|---|---|
打開文件 | int open(const char *pathname, int flags); | 打開一個文件,返回文件描述符。-1則打開失敗,可以使用perror 來輸出錯誤。pathname 是文件路徑,flags 指定打開模式(如O_RDONLY只讀、O_WRONLY只寫、O_RDWR讀寫、O_CREAT如果文件不存在則創建 也可以使用按位或同時使用不同的權限。 | int copy=open("a.text",O_WRONLY | O_CREAT,0664);//寫入且創建,文件的rwx權限為664,創建必須加權限或者后期使用chmod 664 a.text |
關閉文件 | int close(int fd); | 關閉一個文件描述符 | close(copy); |
讀文件 | ssize_t read(int fd, void *buf, size_t count); | 從文件描述符fd指向的文件中讀取最多count字節到緩沖區buf中。返回值>0 則為實際讀取到的字節數,=0 表示已經讀完,-1 則表示失敗 | read(fd,buff,sizeof(buff)) |
寫文件 | ssize_t write(int fd, const void *buf, size_t count); | write:將緩沖區buf中的最多count字節數據寫入文件描述符fd指向的文件。成功返回寫入的字節數,失敗返回-1 | write(copy,buff,len); |
復制文件描述符、設置/獲取文件的狀態 | int fcntl(int fd, int cmd, long arg); | fd:要操作的文件描述符 cmd:指定要執行的操作類型 F_DUPFD:復制文件描述符。 F_GETFD:獲取文件描述符的標志。 F_SETFD:設置文件描述符的標志,常用于設置close-on-exec標志。 F_GETFL:獲取文件狀態標志,如文件是否為非阻塞模式等。 F_SETFL:設置文件狀態標志。 F_GETLK, F_SETLK, F_SETLKW:與文件鎖操作相關,分別用于獲取、設置或設置帶有阻塞的文件鎖。 | fcntl(fd, F_SETFL, fcntl(fd,F_GETFL,0)| O_NONBLOCK) //查詢當前文件描述符的狀態標志,然后在其基礎上增加非阻塞標志,并最終更新文件描述符的屬性,使其變為非阻塞模式。 |