系统调用-创建文件
int creat(const char *filename , mode_t mode)
变量 作用
filename 要创建的文件名(包含路径,缺省为当前目录)
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 其他人可以读、写、执行 S_ISUID 设置用户的执行ID S_ISGID 设置组的执行ID



系统调用-打开文件
int open(const char *pathname , int flags)
int open(const char *pathname , int flags , mode_t mode)
变量 作用
pathname 要打开的文件名(包含路径,缺省为当前目录)
flags 文件打开标志
mode 文件的访问权限(使用O_CREATE时需要设置)
打开标志:
O_RDONLY 以只读的方式打开文件 O_WRONLY 以只写的方式打开文件 O_RDWR 以读写的方式打开文件 O_APPEND 以追加的方式打开文件 O_CREAT 创建一个文件 O_EXEC 如果使用了O_CREAT而且文件存在,就会发生一个错误 O_NOBLOCK 以非阻塞的方式打开一个文件 O_TRUNC 如果文件已经存在,则删除文件的内容



系统调用-关闭文件
int close(int fd)
变量 作用
fd 已经打开的文件的文件描述符<



系统调用-读写文件
int read(int fd , const void *buf , size_t length)
功能:实现从文件描述符"fd"所指定的文件中读取"length"个字节到buf所指定的缓冲区中,返回值为实际读取到的字节数
int write(int fd , const void *buf , size_t length)
功能:实现将length个字节从buf指向的缓冲区中写到文件描述符fd所指向的文件中,返回值为实际写入的字节数
变量 作用
fd 文件的文件描述符
buf 指定向缓冲区的指针
length 为缓冲区的大小(以字节为单位)



系统调用-定位
int lseek(int fd , offset_t offset , int whence)
功能:将文件读写指针相对whence移动offset个字节,如果操作成功时,返回文件指针相对与文件头的位置.
变量 作用
fd 文件的文件描述符
offset 要移动的字节数,offset可取负值
whence 文件读写指针相对的位置
参数whence可以使用如下值:
SEEK_SET: 相对文件开头 SEEK_CUR: 相对文件读写指针的当前位置 SEEK_END: 相对文件末尾



系统调用-访问判断
int access(const char *pathname , int mode)
变量 作用
pathname 要判断的文件名称(包含路径,缺省为当前目录)
mode 要判断的操作模式
判断操作模式值:
R_OK 文件可读 W_OK 文件可写 X_OK 文件可执行 F_OK 文件存在



系统调用-访问判断
int select(int maxfd,fd_set * readfds,fd_set * writefds,fd_set * exceptfds,struct timeval * timeout);
		
功能:用来程序在timeout的时间内监视多个文件的状态变化,程序会停在select函数中等待,知道时间活着条件达成为止
变量 作用
maxfd 文件描述符的范围,比待检测的最大文件描述符大1
readfds 检测读操作的文件描述符集
writefds 检测写操作的文件描述符集
exceptfds 检测异常状态的文件描述符集
timeout 定时器
timeout取值:
0 不管条件是否满足都立即返回,无条件满足时要求返回0,有条件满足时要求返回一个正值 NULL select讲进程阻塞,直到条件满足 正整数 select阻塞进程的时间
select返回值:
1.返回要求的文件描述符个数 2.无条件满足时,返回0 3.被某个信号中断时,返回-1并设置errno为EINTR 4.如果出错,返回-1并设置相应的errno
文件描述符集:
#include void FD_SET(int fd, fd_set *fdset) 功能:将文件描述符fd添加到文件描述符集fdset中 void FD_CLR(int fd, fd_set *fdset) 功能:从文件描述符集fdset中清除到文件描述符fd void FD_ZERO(fd_set *fdset) 功能:清空文件描述符集fdset void FD_ISSET(int fd, fd_set *fdset) 功能:检测文件描述符集fdset中相关fd的位是否为真



系统调用-mmap
void* mmap ( void * addr , size_t length , int prot , int flags , int fd , off_t offset )
		
变量 作用
addr 指定映射的起始地址,通常设为NULL,由系统指定
lenght 映射到内存的文件长度
prot 映射区的保护方式
flags 映射区的特性
fd 由open返回的文件描述符,代表要映射的文件
offset 以文件开始处的偏移量,必须是分页大小的整数倍,通常为0,表示从文件头开始映射
prot取值:
PROT_EXEC 映射区域可被执行 PROT_READ 映射区域可被读取 PROT_WRITE 映射区域可被写入 PROT_NONE 映射区域不能存取
flags取值:
MAP_SHARED 对映射区域的写入数据会复制回文件,且允许其他映射该文件的进程共享 MAP_PRIVATE 对映射区域的写入操作会产生一个映射的复制(copy-on-write),对此区域所做的修改不会写回原文件
int munmap(void *start,size_t length)
		
功能:取消参数start所指向的映射内存,参数length表示欲取消的内存大小.

返回值:解除成功返回0,否则返回-1,错误原因存于errno中.

变量 作用
start 起始地址,为mmap的返回值
length 需要取消的大小