Linux编程手册读书笔记第四章(20140407)
? ? ? #include<sys/stat.h>
? ? ? #include<fcntl.h>
? ? ? int open(const char *pathname, int flags, …/* mode_t mode*/);
? ? ? (1)調(diào)用發(fā)生錯誤,open返回-1,并將errno設置為相應的錯誤標志。
? ? ? (2)flags為位掩碼,用于指定文件的訪問模式,O_CREATE ,O_RDONLY, O_WRONLY,? O_RDWR,O_APPEND; ? 注:因是位掩碼,O_RDWR不等同于O_RDONLY|O_WRONLY
? ? ? (3)mode為位掩碼,用于指定文件的訪問權(quán)限。如果open? flags參數(shù)并沒有指定O_CREATE標志,則可以省略mode參數(shù)。
? ? ? #include<unistd.h>
? ? ? ssize_t read(int fd, void * buffer, size_t count);
? ? ? (1)如果read()調(diào)用成功,將返回實際讀取的字節(jié)數(shù),如遇到文件結(jié)束(EOF)則返回0
? ? ? (2)從終端讀取字符,一遇到換行符(\n),read()調(diào)用就會結(jié)束。
? ? ? #include<unistd.h>
? ? ? ssize_t write(int fd, void * buffer, size_t count);
? ? ? write()調(diào)用成功,將返回實際寫入文件的字節(jié)數(shù)
? ? ? #include<unistd.h>
? ? ? int close(int fd);
?? ? close()可能執(zhí)行失敗:企圖關(guān)閉一個未打開的文件描述符;或者兩次關(guān)閉同一個文件描述符。
? ? ? #include<unistd.h>
? ? ? off_t lseek(int fd, off_t offset, int whence);
?? ? (1)文件第一個字節(jié)的偏移量為0
?? ? (2)offset:指定一個以字節(jié)為單位的數(shù)值, off_t:有符號整形數(shù)
?? ? (3)whence:表明應參照哪個基點來解釋offset參數(shù)。
? ? ? ? ? ? SEEK_SET: 將文件偏移量設置為從文件頭部起始點開始的offset個字節(jié)
? ? ? ? ? ? SEEK_CUR: 相對于當前文件偏移量,將文件偏移量調(diào)整offset個字節(jié)
? ? ? ? ? ? SEEK_END: 將文件偏移量設置為起始于文件尾部的offset個字節(jié),也就是說,offset參數(shù)應該從文件最后一個字節(jié)之后的下一個字節(jié)算起
?? ? (4)lseek()調(diào)用成功會返回新的文件偏移量。
?? ? (5)lseek()并不適用于所有類型的文件。不允許將lseek()應用于管道、FIFO、socket或者終端,一旦如此,errno返回ESPIPE
? ? ? #include<sys/ioctl.h>
? ? ? int ioctl(int fd, int request, …/*argp*/);
? ? ? (1) request: 指定了將在fd上執(zhí)行的控制操作。具體設備的頭文件定義了可傳遞給request參數(shù)的常量。
? ? (2)ioctl根據(jù)request的參數(shù)值來確定argp所期望的類型。通常情況下,argp是指向整數(shù)或結(jié)構(gòu)的指針。有些情況,不需要使用argp
? ? (3)ioctl在5350上用于對于芯片的管腳進行I/O設置。常規(guī)使用場景是open-->ioctl-->close
總結(jié)
以上是生活随笔為你收集整理的Linux编程手册读书笔记第四章(20140407)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux编程手册读书笔记第三章(201
- 下一篇: 晴空物语什么时候公测,晴空物语什么时候可