linux常见文件及目录操作函数
1、open
|
作用:用flags指定的操作打开pathname指定的文件。成功返回一个文件描述符,失败返回-1并设置errno。
常用的flags包括O_RDONLY, O_WRONLY, O_RDWR,O_CREAT, O_TRUNC, O_APPEND等等。它们直接可以在合理的前提下进行逻辑或,例如O_CREAT | O_TRUNC | O_WRONLY。
2、close
原型:
|
作用:注销描述符fd,关闭文件。失败则返回-1并设置errno。
3、read
原型:
|
作用:从描述符fd引用的文件中读出count个字节到buf所指向的缓冲区。成功返回实际读出的字节数,失败返回-1并设置errno。
4、write
原型:
|
作用:把buf指向的缓冲区中的count个字节写入到描述符fd引用的文件。成功返回实际写入的字节数,失败返回-1并设置errno。
5、ftruncate
原型:
|
作用:把描述符fd引用的文件缩短到length指定的长度。成功返回0,失败返回-1并设置errno。
6、lseek
原型:
|
作 用:定位操作文件的指针到相对whence偏移offset的位置。whence代表:SEEK_SET(开始于文件头), SEEK_CUR(开始于当前指针位置,这时offset可以为负数), SEEK_END(从文件结尾往回数)。成功返回指针的新位置,失败或出错返回-1并设置errno。
7、fsync
原型:
|
作用:把在fd上执行的写入操作同步到真正的磁盘或其它下层设备文件中。成功返回0,失败返回-1并设置errno。
8、fstat
原型:
|
作用:把描述符fd引用的文件的相关信息保存到buf指向的stat结构中。成功返回0,失败返回-1并设置errno。
其 中stat结构的成员st_mode即文件位模式可以用S_INLINK(mode)、S_ISREG(mode)、S_ISDIR(mode)……等宏 返回的真假判断其文件类型(目录、普通文件、符号链接、字符设备、块设备、FIFO管道、套接口等)。另外,st_atime成员可以用ctime这个函 数转换为datetime格式的字符串。ctime的原型为:
|
9、fchmod
原型:
|
作用:把fd引用的文件的模式改变为mode指定的模式,类似shell里面的chmod命令。但要注意八进制的表示方法为以0起头。成功返回0,失败返回-1并设置errno。
10、flock和fcntl
原型:
|
|
作用:在打开文件前给文件上锁以防止其被其它IO进程访问而引起不可预计的后果。
flock的operation包括LOCK_SH, LOCK_EX, LOCK_UN。fcntl的cmd包括F_GETLK, F_SETLK,F_SETLKW……等等。成功返回0,失败返回-1.
fcntl 比flock更通用。除了符合POSIX标准外,fcntl还同时支持建议性锁(由程序来检查锁)和强制性锁(由操作系统内核检查锁),另外可以用于读取 锁(共享锁)和写入锁(排斥锁)。fcntl除了可以上锁文件外,还可以控制文件的进程组、复制文件描述符等。
11、dup和dup2
原型:
|
作用:dup和dup2都用于复制文件描述符,它们调用成功都返回新的描述符,失败则返回-1并设置errno。其中dup2可以自定义新的文件描述符,通常用来重新打开或者重定向文件描述符。例如:
|
重定向文件描述符fd到标准输出。
12、select
原型:
|
作用:同时读/写fd_set结构中的描述符集合,n代表集合中的文件描述符最大值加1,不需要的参数设置为NULL。timeout定义select的阻塞等待时间,如果设置为0则为非阻塞式的I/O调用,如果设置为NULL则一直等到I/O操作发生或者出错。
select成功返回受监视的fds集合的文件描述符总数,如果timeout时集合中的文件描述符都没有该表状态则返回0,失败则返回-1并设置errno。
例如:
|
有四个宏函数可以对描述符集合fd_set进行操作:
|
13、ioctl
原型:
|
作用:设置或检索文件的多种有关参数并对文件进行一些其它操作。是否可以是ioctl以及传递什么参数给ioctl因下层设备而异。