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

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

查看所有标签

猜你喜欢:

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

组合数学教程

组合数学教程

范林特 / 刘振宏、赵振江 / 机械工业出版社 / 2007-4 / 49.00元

本书介绍组合数学中的基础理论和实际应用,讲述的内容非常广泛,讨论的问题涵盖组合数学所涉及的绝大部分领域。本书不仅包含了通常组合数学教科书中的经典内容,而且收集了若干新的内容,如Lovász筛法、范德瓦尔登积和式猜想、结合区组设计、码和设计等。 本书阐述深入浅出,简明易懂,适合作为高等院校高年级本科生与低年级研究生的组合数学课程教材,也适合作为数学和其他学科的研究人员的参考书。一起来看看 《组合数学教程》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具