Linux下文件I/O系统调用

1、系统调用和标准IO库函数的区别

库是可重用的模块 处于用户态
系统调用是os提供的服务 处于内核态 不能直接调用 而要使用类似int 0x80的软中断陷入内核 所以库函数中有很大部分是对系统调用的封装。从宏观上说,系统调用时内核层,C标准库在应用层。

2、文件描述符

文件描述符是Linux内核为了高效管理已被打开的文件而创建的索引,其值为一个非负整数,而通常为小整数。而且系统运行时,系统会自动打开三个文件描述符,即标准输入0,标准输出1,标准 出错2 。这三个文件描述符默认存在,若新打开的文件描述符最小只能是3 .
在这里插入图片描述

3、文件扩展名

在Linux中,扩展名对Linux内核没有实际意义,但是可以用来人为区分不同的文件,方便用户使用。
.tar, .tar.gz, .tgz, .zip, .tar.bz表示压缩文件,
创建命令为tar, gzip, unzip等
.sh 文件表示shell脚本文件
.pl 表示perl语言文件
.py 表示python语言文件
.conf 表示系统服务的配置文件
.c 表示C文件
.h 头文件
.cpp 表示C++源文件
.so 表示动态库文件
.a 表示静态库文件

4、文件I/O操作函数

open()系统调用

int open(const char *path, int oflag, ... /*mode_t mode*/);

open()系统调用用来打开一个文件,并返回一个文件描述符,并且该文件描述符是当前进程最小、未使用的文件描述符数值。
参数:path:要打开的文件、设备的路径
oflag: 由多个选项进行“或”运算构造oflag参数。
必选:O_RDONLY(只读)、O_WRONLY(只写)、O_RDWR(读写)。
可选: O_APPEND 每次写时都追加到文件的尾端。
O_CREAT 文件不存在则创建它,使用该选项需要第三个参数mode
O_TRUNC 如果文件存在,而且为只写或读写成功打开,则将其长度截取为0;
O_NONBLOCK 如果path是一个FIFO、块设备、字符特殊文件则此选项为文件的本次打开和后续的I/O操作 设置非阻塞模式方式。
代码示例:

int   fd;
fd = open("text.txt", O_RDWR|O_CREAT|O_TRUNC, 0666);
fd = open("text.txt", O_WRONLY|O_APPEND);

create()系

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值