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 | 文件读写指针相对的位置 |
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);
| 变量 | 作用 |
|---|---|
| maxfd | 文件描述符的范围,比待检测的最大文件描述符大1 |
| readfds | 检测读操作的文件描述符集 |
| writefds | 检测写操作的文件描述符集 |
| exceptfds | 检测异常状态的文件描述符集 |
| timeout | 定时器 |
select返回值:0 不管条件是否满足都立即返回,无条件满足时要求返回0,有条件满足时要求返回一个正值 NULL select讲进程阻塞,直到条件满足 正整数 select阻塞进程的时间
文件描述符集:1.返回要求的文件描述符个数 2.无条件满足时,返回0 3.被某个信号中断时,返回-1并设置errno为EINTR 4.如果出错,返回-1并设置相应的errno
#includevoid 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的位是否为真
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,表示从文件头开始映射 |
flags取值:PROT_EXEC 映射区域可被执行 PROT_READ 映射区域可被读取 PROT_WRITE 映射区域可被写入 PROT_NONE 映射区域不能存取
MAP_SHARED 对映射区域的写入数据会复制回文件,且允许其他映射该文件的进程共享 MAP_PRIVATE 对映射区域的写入操作会产生一个映射的复制(copy-on-write),对此区域所做的修改不会写回原文件
int munmap(void *start,size_t length)
返回值:解除成功返回0,否则返回-1,错误原因存于errno中.
| 变量 | 作用 |
|---|---|
| start | 起始地址,为mmap的返回值 |
| length | 需要取消的大小 |