Linux/Unix文件和IO

栏目: 服务器 · 发布时间: 5年前

内容简介: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)
  1. 关闭文件会释放该进程加在该文件的所有记录锁
  2. 进程终止时,内核会自动关闭它所有打开的文件

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

产品心经:产品经理应该知道的60件事(第2版)

产品心经:产品经理应该知道的60件事(第2版)

闫荣 / 机械工业出版社 / 2016-4 / 69.00

本书第一版出版后广获好评,应广大读者要求,作者把自己在实践中新近总结的10个关于产品的最佳实践融入到了这本新书中。这"10件事"侧重于深挖产品需求和产品疯传背后的秘密,配合之前的"50件事",不仅能帮产品经理打造出让用户尖叫并疯传的产品,还能帮助产品经理迅速全方位提升自己的能力。 本书作者有超过10年的产品工作经验,在互联网产品领域公认的大咖,这本书从产品经理核心素养、产品认知、战略与规划、......一起来看看 《产品心经:产品经理应该知道的60件事(第2版)》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

URL 编码/解码
URL 编码/解码

URL 编码/解码