【APUE】第3章 文件I/O (2) 函数creat、lseek、read、write使用说明
作者:互联网
1、函数creat
可以使用creat函数创建一个新文件。
1 #include<fcntl.h> 2 int creat(const char *path, mode_t mode); 3 4 返回值: 5 若成功,返回为只写打开的文件描述符; 6 若失败,返回-1
上述函数原型等价于:
1 open(path, O_WRONLY | O_CREAT | O_TRUNC, mode);
使用creat函数的一个不足之处是它以只写的凡是打开创建的新文件。在没有open新版本函数之前,如果要创建一个临时文件,并要先写该文件,然后又读该文件,则必须先调用creat、close,然后再调用open。即可以使用下列方式实现:
1 open(path, O_RDWR | O_CREAT | O_TRUNC, mode);
一般直接使用open函数替代creat函数。
2、函数lseek
每个打开的文件都有一个与之相关联的“当前文件偏移量”(current file offset)。它通常是一个非负整数(通常是),用以度量从文件开始处计算的字节数。通常,读、写操作都是从当前文件偏移量处开始,并使偏移量增加所读写的字节数。按系统默认情况下,当打开一个文件时,除非指定O_APPEND选项,否则该偏移量被设置成0.
可以调用lseek函数显示地为一个打开的文件设置偏移量:
1 #include<unistd.h> 2 off_t lseek(int fd, off_t offset, int whence); 3 4 返回值: 5 若成功,返回新的文件偏移量 6 若失败,返回-1
对参数offset的解释与参数whence的值有关:
- 若whence是SEEK_SET,则将该文件的偏移量设置为距文件开始处offset个字节。
- 若whence是SEEK_CUR,则将该文件的偏移量设置为其当前值加offset,offset可正可负。
- 若whence是SEEK_END,则将该文件的偏移量设置为文件长度加offset,offset可正可负。
若lseek成功执行,则返回新的文件偏移量,为此可以使用下列方式确定打开文件的当前的偏移量:
标签:lseek,APUE,creat,文件,偏移量,offset,函数 来源: https://www.cnblogs.com/xuelisheng/p/10799292.html