内容简介:oflag:whence:dup:返回当前可用的最小描述符
文件和IO
1.open
#include <fcntl.h> int open(const char *path, int oflag, ...) int openat(int fd, const char *path, int oflag, ...mode_t mode) // success: ret=fd ohterwise-1
oflag:
// 值根据系统而不同 #define O_RDONLY 0x0000 /* 只读 */ #define O_WRONLY 0x0001 /* 只写 */ #define O_RDWR 0x0002 /* 读写 */ #define O_ACCMODE 0x0003 /* mask for above modes */ #define O_NONBLOCK 0x0004 /* 非阻塞 no delay */ #define O_APPEND 0x0008 /* 追加 */ #define O_SYNC 0x0080 /* 使每次write等待物理IO操作完成,包括文件属性更新synch I/O file integrity */ #define O_CREAT 0x0200 /* 文件不存在则创建 */ #define O_TRUNC 0x0400 /* 文件存在且为读或读写打开,截断为0 */ #define O_EXCL 0x0800 /* 如果设置O_CREAT且存在则报错,否则创建且是原子操作 */
2.close
#include <unistd.h> int close(int fd)
- 关闭文件会释放该进程加在该文件的所有记录锁
- 进程终止时,内核会自动关闭它所有打开的文件
3.lseek
#include <unistd.h> off_t lseek(int fd, off_t offset, int whence); // success:off_t otherwise:-1
whence:
SEEK_SET: 据文件开始off_t SEEK_CUR:当前值加off_t, offset可正可负 SEEK_END:文件长度加off_t,offset可正可负
4.read
#include <unistd.h> ssize_t read(int fd, void *buf, size_t nbytes) // success: 文件的字节数,若是文件尾返回0, 出错:-1
5.write
#include <unistd.h> ssize_t write(int fd, const void *buf, size_t nbytes) // success: 已写的字节数, 出错:-1
6.dup/dup2
#include <unistd.h> int dup(int fd) int dup2(int fd, int fd2) // success: 新的文件描述符, 出错:-1
dup:返回当前可用的最小描述符
dup2:fd2指定新的描述符,若fd2已经打开将其关闭,若fd和fd2相等,则不关闭
7.sync/fsync/fdatasync
#include <unistd.h> int sync(void) // 所有 int fsync(int fd) // 指定的fd 数据+文件属性 int fdatasync(int fd) // 指定的fd 数据 // success: 0, 出错:-1
8.fcntl
#include <fcntl.h> int fcntl(int fd, int cmd, ...arg) // success: 依赖于cmd, 出错:-1
cmd:
F_DUPFD|F_DUPFD_CLOEXEC:复制文件描述符 F_GETFD|F_SETFD:获取/设置文件描述符标志 F_GETFL|F_SETFL:获取/设置文件状态标志 F_GETOWN|F_SETOWN:获取/设置异步io所有权 F_GETLK|FSETLK:获取/设置记录锁
9.ioctl
#include <unistd.h> // #include <sys/ioctl.h> //linux int ioctl(int fd, int request, ...arg) // success: 其他值, 出错:-1
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Scala在资源文件夹中获取文件的文件路径
- Go语言的文件操作:文件的读写,文件的新建打开和删除
- 安卓文件存储/文件读写操作
- 文件上传之秒传文件
- Eclipse中写jsp文件时,发现里面加载不了js文件和css文件(解决css文件在eclipse中显示不了)
- Linux 下按照文件大小查找文件
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。