目录
- 1.打开文件
- 参数介绍
- 2. 读文件
- 3. 写文件
- 4.关闭
- 分析题
- 练习题
- 系统调用和库函数的区别
#inlcude
1.打开文件打开一个已存在的文件
int open(const char *pathname, int flags);新建一个文件并创建权限
int open(const char *pathname, int flags, mode_t mode);
参数介绍pathname:将要打开的文件路径和名称
flags:打开标志
标志介绍:
Theargumentflagsmustincludeone of the following access modes:O_RDONLY, O_WRONLY, or O_RDWR.These request openingthefileread-only, write-only, or read/write, respectively.O_RDONLY 只读打开
O_RDWR 读写打开
O_CREAT 文件不存在则创建
O_APPEND 文件末尾追加
O_TRUNC 清空文件,重新写入 mode
The following symbolic constants are provided for mode:S_IRWXU00700 user (file owner) has read,write,andexecute permissionS_IRUSR00400 user has read permissionS_IWUSR00200 user has write permissionS_IXUSR00100 user has execute permissionS_IRWXG00070 group has read, write, and execute permissionS_IRGRP00040 group has read permissionS_IWGRP00020 group has write permissionS_IXGRP00010 group has execute permissionS_IRWXO00007 others have read, write, and execute permissionS_IROTH00004 others have read permissionS_IWOTH00002 others have write permissionS_IXOTH00001 others have execute permission返回值:文件描述符
2. 读文件ssize_t read(int fd, void *buf, size_t count);参数介绍
fd:对应打开的文件描述符buf : 存放数据的空间count: 计划一次从文件中读多少字节数据返回值: 实际读到的字节数
3. 写文件ssize_t write(int fd, const void *buf, size_t count);参数介绍:
fd :对应打开的文件描述符buf:存放待写入的数据count:计划一次向文件中写入多少数据
4.关闭int close(int fd);【Linux之操作文件的系统调用】fd :对应的文件描述符
分析题如果父进程先打开一个文件,fork 后子进程是否可以共享使用?
文件内容

文章插图
代码
#include#include

文章插图
结论:
由于 fork 创建的子进程的 PCB 是拷贝父进程的,子进程的 PCB 中的文件表指向打开文件的指针只是拷贝了父进程 PCB 中的值,所以父子进程共享父进程 fork 之前打开的所有文件描述符 。

文章插图
练习题完成对一个文件的复制(类似命令:cp)
原文件内容为:

文章插图
代码:
#include#include
可以看到newfile.txt创建成功

文章插图
系统调用和库函数的区别区别: 系统调用的实现在内核中,属于内核空间,库函数的实现在函数库中,属于用户空间 。
系统调用执行过程:

文章插图
到此这篇关于Linux之操作文件的系统调用的文章就介绍到这了,更多相关Linux文件系统调用内容请搜索考高分网以前的文章或继续浏览下面的相关文章希望大家以后多多支持考高分网!
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
