Linux编程基础——文件I/O

在UNIX/Linux系统中,一切皆文件,包括服务和设备。文件I/O涉及open、read、write和close等系统调用。标准IO带有缓冲区,而直接使用系统IO虽然更耗时,但增加缓冲区后速度可以超过标准IO。随机读写时,文件位置指针决定了读写的起始位置。系统IO无法直接处理文本文件,且在文件末尾写入形成空洞。内核有三个默认文件描述符,并支持文件描述符复制。
摘要由CSDN通过智能技术生成

一切皆文件

UNIX/Linux为操作系统把服务和设备都抽象成了文件,并提供了一套简单而统一的接口,这部分接口就是文件读写。也就是说UNIX/Linux系统中的任何对象都可以被当作某种特殊的文件,以文件的形式访问。

文件分类

目录文件、设备文件、Socket文件、管道文件、普通文件、链接文件

文件相关的系统调用
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int open(const char *pathname, int flags);

功能:打开文件
pathname:文件的路径
flags:打开文件的方式
     O_RDONLY 只读
     O_WRONLY 只写
     O_RDWR   读写
     O_APPEND 追加,文件位置指针在末尾
     O_CREAT  文件不存在则创建
     O_EXCL   如果文件存在则创建失败
     O_TRUNC  如果文件存在则清空
     O_NDELAY 非阻塞,打开文件后的操作以非阻塞模式进行。
     O_SYNC   同步,写入数据后等待数据被写入到底层硬件后才返回。
     O_ASYNC  异步,当文件可读/写时向调用的进程发送信号SIGIO。
返回值:文件描述符,类似于标准库的FILE*,代表一个打开的文件。

int open(const char *pathname, int flags, mode_t mode);

功能:创建文件
flags:O_CREATE
mode:
    S_IRWXU  00700 拥有者 读
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值