函数creat
作用:创建一个新文件(只以写方式打开创建的文件)
#include<fcntl.h>
int creat(const char *path ,mode_t mode);
参数解释:
path: 将要创建的文件路径
mode: 文件权限级别
该函数成功则返回为只写打开的文件描述符,若出错则返回 -1
该函数等效于 open(path,O_WRONLY|O_CREAT|O_TRUNC,mode);
由于creat函数打开的文件只有写权限,如果想要由读权限,则需要先关闭该文件,然后再用open以其他权限打开
函数read
作用:从打开文件中读取数据
#include<unistd.h>
ssize_t read(int fd,void *buf,size_t nbytes);
参数解释:
fd:文件描述符(数据源)
buf:接收数据的缓冲区(数据目的地)
nbytes:预期接收的数据字节数(一般和buf缓冲区一样大)
返回值:如果没有出错,没有读到文件结尾则返回真实读到的字节数,如果已到文件结尾则返回0。如果出错则返回-1
函数write
作用:向打开的文件写数据
#include<unistd.h>
ssize_t write(int fd,void *buf,ssize_t nbytes);
参数解释:
fd:文件描述符(数据将要写入的目的地)
buf:数据缓冲区(数据源)
nbytes:期望写入文件的数据字节数(一般和buf缓冲区一样大)
返回值:如果没有出错返回已写入的字节数,出错则返回-1
函数lseek
#include<unistd.h>
off_t lseek(int fd, off_t offset, int whence);
参数解释:
fd:打开的文件描述符
offset:光标的相对移动位置(相对于whence参数)
whence:光标位置
SEEK_SET:将光标移动到距文件开始处offset个字节
SEEK_CUR:将光标移动到距当前位置的offset个字节
SEEK_END:将光标移动到距文件结尾的offset个字节
返回值:若成功则返回移动后的偏移量,若出错则返回-1
注意:1.文件偏移量offset可正可负,因此在检测lseek函数是否调用成功时,不能测试它是否小于0,而要测试它是否等于-1
2.offset偏移量可以大于当前文件长度,这种情况下会在文件种构成一个空洞
重点:1.lseek函数仅将当前的文件偏移量记录在内核中,它并不引起任何的I/O操作,该偏移量用于下一个读写操作
2.文件空洞并不占用磁盘空间
函数close
作用:关闭文件描述符
#include<unistd.h>
int close(int fd);
返回值:成功返回0,失败返回-1
注意:当一个进程终止时,内核自动关闭它所有的打开文件,很多程序利用这一功能不用显示的调用close函数关闭打开的文件