linux文件操作函数
2014-02-28 14:23
344 查看
linux常见文件及目录操作函数
1、open原型:
#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); |
常用的flags包括O_RDONLY, O_WRONLY, O_RDWR,O_CREAT, O_TRUNC, O_APPEND等等。它们直接可以在合理的前提下进行逻辑或,例如O_CREAT | O_TRUNC | O_WRONLY。
2、close
原型:
#include <unistd.h> int close(int fd); |
3、read
原型:
#include <unistd.h> ssize_t read(int fd, const void *buf, size_t count); |
4、write
原型:
#include <unistd.h> ssize_t write(int fd, const void *buf, size_t count); |
5、ftruncate
原型:
#include <unistd.h> int ftruncate(int fd, off_t length); |
6、lseek
原型:
#include <sys/types.h> #include <unistd.h> off_t lseek(int fd, off_t offset, int whence); |
7、fsync
原型:
#include <unistd.h> int fsync(int fd); |
8、fstat
原型:
#include <sys/stat.h> #include <unistd.h> int fstat(int fd, struct stat *buf); |
其 中stat结构的成员st_mode即文件位模式可以用S_INLINK(mode)、S_ISREG(mode)、S_ISDIR(mode)……等宏 返回的真假判断其文件类型(目录、普通文件、符号链接、字符设备、块设备、FIFO管道、套接口等)。另外,st_atime成员可以用ctime这个函 数转换为datetime格式的字符串。ctime的原型为:
#include <time.h> char *ctime(const time_t *timer); |
原型:
#include <sys/types.h> #include <sys/stat.h> int fchmod(int fd, mode_t mode); |
10、flock和fcntl
原型:
#include <sys/file.h> int flock(int fd, int operation); |
#include <unistd.h> #include <fcntl.h> int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock); |
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
原型:
#include <unistd.h> int dup(int oldfd); int dup2(int oldfd, int newfd); |
dup2(fd, STDOUT_FILENO); |
12、select
原型:
#include <unistd.h> int select(int n, fd_set *readfds, fd_set *writefds, fd_set exceptfds, structtimeval *timeout); |
select成功返回受监视的fds集合的文件描述符总数,如果timeout时集合中的文件描述符都没有该表状态则返回0,失败则返回-1并设置errno。
例如:
#include <unistd.h> #include <sys/time.h> #include <sys/types.h> fd_set *writeable_fds; select(maxfds, NULL, writefds, NULL, 10); |
#include <sys/select.h> FD_ZERO(fd _set *set); /* 清空集合set */ FD_SET(int fd, fd_set *set); /* 把描述符fd添加到集合set */ FD_CLR(int fd, fd_set *set); /* 从集合set中删除描述符fd */ FD_ISSET(int fd, fd_set *set); /* 判断描述符fd是否在集合set中 */ |
原型:
#include <sys/ioctl.h> int ioctl(int d, int request, ...); |
相关文章推荐
- Linux文件系统文件属性及目录操作函数
- Linux文件操作函数open close read write等示例
- 解析linux 文件和目录操作的相关函数
- 文件操作函数全集 Linux C(流式 I/O)
- LINUX下文件操作函数
- linux文件操作函数(open、write、read、close)可用于串口读写
- linux文件目录操作相关函数
- Linux C的文件操作及相关函数
- linux下的文件操作函数及creat用法
- linux 文件操作函数 通过例子来解释 父子间文件描述符共享 内存映像图
- linux文件操作相关函数
- linux下文件的读写操作、字符串的处理操作,多线程操作等相关函数使用说明
- Linux 文件和目录操作的相关函数
- Linux 文件操作函数
- Linux文件操作函数接口
- linux 文件操作函数 通过例子来解释 父子间文件描述符共享 内存映像图
- linux系统文件操作函数之dup,dup2,fcntl
- Linux中对文件删除函数unlink的操作
- Linux C——带IO缓冲的文件操作函数
- linux c语言之文件操作相关函数--fopen(),fopen_s(),fread(),fwrite(),fclose(),