API:
int fd;(文件描述符 )
1、 int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
Pathname:要打开的文件名
flag:O_RDONLY 只读 O_WRONLY 只写打开 O_RDWR 可读可写打开
其他常量:
O_EXCL:如果同时指定了O_CREAT(和O_CREAT同时存在),而文件已经存在,则出错。
O_APPEND:每次写时都加到文件的尾端。
O_TRUNC:打开文件时,如果这个文件中本来是有内容的,而且为只读或只写成功打开,则将其长度截短为0;
返回值:如果open打开成功 返回一个小的、非负整数,失败则返回-1;
fd = open("./file",O_RDWR); //打开file1文件,以可读可写的方式打开
fd = open("./file",O_RDWR|O_CREAT,0600); //打开file1文件,如果打开失败,则创建一个file1文件,0600为可读可写的权限
2、 ssize_t write(int fd, const void *buf, size_t count);
描述:往fd里面写一个const void *buf,字节大小为size_t count。
write(fd,buf,strlen(buf));
返回值:成功则返回一个写入的整形个数,否则返回-1.
3、 ssize_t read(int fd, void *buf, size_t count);
描述:从fd里面读取size_t count个字节放进void *buf中
返回值:成功返回一个读取到的字节大小(如果从字符串尽头开始读取,则返回0),否则返回-1。
read = (fd,readBuf,n_write); //n_write为从fd里读取到的字节大小
实际上从write函数写入成功以后,光标自动移到字符串的尾部,此时read函数从光标的当前位置读取(即是光标的尾部),所以字节数为0,需要用到lseek函数。
4、off_t lseek(int fd, off_t offset, int whence);
whence:SEEK_SET(文件的头部),SEEK_CUR(文件的当前光标位置),SEEK_END(文件的尾部)
描述:对fd进行操作,从fd的位置偏移offset个字节
lseek(fd,21,SEEK_SET); //从文件的头部偏移21个字节
返回值:lseek调用成功返回一个offset偏移值,否则返回-1.