1. int open(const char *pathname,int oflag, ... /* mode_t mode */);
头文件:#include<fcntl.h>
功能:打开或创建一个文件
返回值:若成功则返回文件描述符,出错则返回-1
oflag取值:O_RDONLY , O_WRONLY , O_RDWR , O_APPEND , O_CREAT , O_EXCL , O_TRUNC , O_NOCTTY ,O_NONBLOCK , O_DSYNC ,O_RSYNC , O_SYNC
O_DSYNC:使每次write等待物理I/O操作完成,但是如果写操作并不影响读取刚写入的数据,则不等待文件属性被更新。
O_RSYNC:使每一个以文件描述符为参数的read操作等待,直至任何对文件同一部分进行的未决写操作都完成。
O_SYNC:使每次write都等到物理I/O操作完成,包括由write操作引起的文件属性更新所需的I/O
mode的取值:S_IRUSR , S_IWUSR , S_IXUSR , S_IRWXU , S_IRGRP , S_IWGRP , S_IXGRP , S_IRWXG , S_IROTH , S_IWOTH , S_IXOTH , S_IRWXO
2. int creat(const char *pathname,mode_t mode);
头文件:#include<fcntl.h>
功能:创建一个文件
返回值:若成功则返回文件描述符,若出错则返回-1
3. int close(int filedes);
头文件:#include<unistd.h>
功能:关闭一个打开的文件
返回值:若成功则返回0,否则返回-1
4. off_t lseek(int filedes,off_t offset,int whence);
头文件:#include<unistd.h>
功能:为一个打开的文件设置其偏移量。
返回值:若成功则返回新的文件偏移量。出错则返回-1
whence取值:SEEK_SET , SEEK_CUR , SEEK_END
5. ssize_t read(int filedes,void *buf,size_t nbyes);
头文件:#include<unistd.h>
功能:从打开的文件中读取数据
返回值:若成功则返回读到的数据,若已到文件尾则返回0,若出错则返回-1
6. ssize_t write(int filedes,const void 8buf,size_t nbytes);
头文件:#include<unistd.h>
功能:向打开的文件写数据
返回值:若成功则返回已写的字节数,出错则返回-1
7. dup 和 dup2函数
功能:用于复制一个现存的文件描述符
int dup(int filedes);
int dup2(int filedes,int filedes2);
头文件:#include<unistd.h>
返回值:若成功则返回新的文件描述符,若出错则返回-1
filedes 指定新描述符的数值,如果filedes 已经打开,则先将其关闭。若filedes等于filedes2,则dup2返回filedes2,而不关闭它
8.sync , fsync 和fdatasync函数
功能:保证磁盘上实际文件系统与缓冲区高速缓存中内容的一致性
int fsync(int filedes);
int fdatasync(int filedes);
void sync(void);
返回值:若成功则返回0,若出错则返回-1
sync 函数:将所有修改过的块缓冲区排入写队列,然后返回,并不等待实际写磁盘操作完成。
fsync函数:对由文件描述符filedes指定的单一文件起作用,并且等待写磁盘操作结束(用于数据库)
fdatasync函数:类似fsync,但只影响文件的数据部分,除数据外,fsync还同步更新文件属性