由于作者才开始接触unix不久,属于菜鸟级别,如果有错误或者其他见解,欢迎大家评论,谢谢。
1.头文件的配置(第三版)
在http://www.apuebook.com/上下载源代码,将源代码(文件名为apue.3e)解压到/usr/include/下,然后到/usr/include/apue.3e/lib下将error.h复制到/usr/include下,将/usr/include/apue.3e/include/apue.h复制到/usr/include下,然后在apue.h中#endif前 加一句#include"error.c ",现在自学到第四单元,还没出现问题。
2.文件描述符
其实我自己认为这个可以理解为文件的一个“数字外号“”,而且这个外号在很多函数中要多要用到。其中有三个特殊的文件描述符0,1,2.
在头文件<unisted.h>(位于/usr/include/unistd.h)中将这三个数进行了宏定义,如下图代码。
/* Standard file descriptors. */
#define STDIN_FILENO 0 /* Standard input. */
#define STDOUT_FILENO 1 /* Standard output. */
#define STDERR_FILENO 2 /* Standard error output. */
3.感觉函数的参数太多了,所以i就只记一部分,等回头看第二或者用到的时候再看。
I/0函数
(1)int open(文件路径,打开方式(只读,只写...),其他参数......)
(2)int creat(文件路径,文件访问权限)
#前两个都是用路径打开,返回文件描述符,其余的都得通过这两个函数获取文件描述符进而操作
(3)int close(文件描述符)
(4)off_t lseek(文件描述符,文件偏移量,偏移方式)
(5)sszie_t read(文件描述符,读入的字符串,读取的字符个数)
(6)ssize_t write(文件描述符,写入的字符串,写入的字符个数)
#改变文件描述符,新旧文件描述符同时指向同一个文件表
(7)int dup(要被替换的文件描述符)
(8)int dup2(要被替换的文件描述符,新的文件描述符)
#缓存区数据写入,sync在缓存块排入写入队列后离开,fsync在写入后离开,fsync包括文件的数据和属性,fdatasync只包括数据
(10)void sync(void)
(11)int fsync(缓存区要写入的文件的描述符)
(12)int fdatafsync(缓存区要写入的文件的描述符)
(13)int fcntl(文件描述符,命令,不同命令所带的参数X)
复制已有的文件描述符 F_DUPFD(返回的值大于X) F_DUPFD_CLOEXEC(暂时还没搞懂)
获取/复制文件描述符 F_GETFD(不懂) F_SETFD(将X设定为文件描述符)
获取/复制文件状态标志 F_GETFL(返回该描述符文件的可读写性) F_SETFL(将文件的其他状态设置,还是不懂)