APUE学习(一)

APUE       Adavance Programming in the UNIX Environment

初看了下中文版,感觉内容少了些,且翻译的也不敢恭维。。。还是老老实实看英文版吧。 

头两章是比较初略的介绍 。其中第一章是对全文内容的一个略观。而第二章主要介绍几种标准及其联系与区别。因此打算从第三章开始写。

文件相关的操作大部分可由5个函数描述:open,read,write,lseek,close (现在比较热的分布式文件系统用的最多也是这几个) 

       int open(const char *pathname, int oflag, ...)     这里oflag分两类,一种是必须要的,如O_RDONLY 、O_WRONLY、O_RDWR  (fcntl.h)。另一种是可选的O_APPEND、O_CREAT、O_EXCL(和O_CREAT一同使用,测试文件是否存在用)、O_TRUNC(O_WRONLY、O_RDWR才可起作用)、O_NOCTTY(不把终端设备作为控制终端)、O_NONBLOCK(对FIFO、特殊块文件、特殊字符文件),O_SYNC(O_FSYNC), 另外几个不常见的O_DSYNC、O_RSYNC

open操作返回的是最小的未用的文件描述符。

        int creat(const char *pathname, mode_t mode);         等价于open (pathname, O_WRONLY | O_CREAT | O_TRUNC, mode); 现在用的较少

    

        当一进程结束,所有打开的文件会自动被内核关闭        int close(int filedes);


        off_t lseek(int filedes, off_t offset, int whence);           (unistd.h) 当文件打开时默认偏移值是0

        whence有三种选择SEEK_SET、SEEK_CUR、SEEK_END,后两种情况下offset可为负值。

        FIFO、SOCKET、PIPE文件不可LSEEK                          任何文件如果还没被写就被读回值为1(lseek可以使文件产生一个空洞)

        _FILE_OFFSET_BITS可避免使用getconf

原文地址:https://www.cnblogs.com/westwind/p/1812095.html