Linux系统编程-文件打开关闭


一、文件描述符

对于Linux而言,所有对设备或文件的操作都是通过文件描述符进行的。当打开或者创建一个文件的时候,内核向进程返回一个文件描述符(非负整数)。后续对文件的操作只需通过该文件描述符,内核记录有关这个打开文件的信息(file结构体)。
一个进程启动时,默认打开了3个文件,标准输入、标准输出、标准错误,对应文件描述符是0(STDIN_FILENO)、1(STDOUT_FILENO)、2(STDERR_FILENO),这些常量定义在unistd.h头文件中。


另外介绍下面两个函数:

fileno:将文件指针转换为文件描述符
fdopen:将文件描述符转换为文件指针


二、什么是I/O

输入/输出是主存和外部设备之间拷贝数据的过程
设备->内存 (输入操作)
内存->设备 (输出操作)
高级I/O
ANSI C提供的标准I/O库称为高级I/O,通常也称为带缓冲的I/O
低级I/O
通常也称为不带缓冲的I/O


三、文件的打开关闭

open系统调用1:

函数原型
int open(const char *path, int flags);
参数
path :文件的名称,可以包含(绝对和相对)路径
flags:文件打开模式
返回值:
打开成功,返回文件描述符;打开失败,返回-1


open系统调用2:

函数原型
int open(const char *path, int flags,mode_t mode);
参数
path :文件的名称,可以包含(绝对和相对)路径
flags:文件打开模式
mode:  用来规定对该文件的所有者,文件的用户组及系 统中其他用户的访问权限
返回值:
打开成功,返回文件描述符;打开失败,返回-1


下面是文件打开的模式:

O_RDONLY 打开一个供读取的文件
O_WRONLY 打开一个供写入的文件
O_RDWR 打开一个可供读写的文件
O_APPEND 写入的所有数据将被追加到文件的末尾
O_CREAT 打开文件,如果文件不存在则建立文件
O_EXCL 如果已经置O_CREAT且文件存在,则强制open() 失败
O_TRUNC 在open() 时,将文件的内容清空

O_CLOEXEC 在进行exec进程替换时关闭打开的文件描述符。

 Specifying this flag permits a program to avoid additional  fcntl(2) F_SETFD operations to set the FD_CLOEXEC flag. 

O_NONBLOCK 非阻塞模式




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值