Linux操作文件系统怎么调用
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本篇内容介绍了"Linux操作文件系统怎么调用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!需要引入
千家信息网最后更新 2025年01月19日Linux操作文件系统怎么调用
本篇内容介绍了"Linux操作文件系统怎么调用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
需要引入的头文件:
#inlcude
1.打开文件
打开一个已存在的文件
int open(const char *pathname, int flags);
新建一个文件并创建权限
int open(const char *pathname, int flags, mode_t mode);
参数介绍
pathname:将要打开的文件路径和名称
flags:打开标志
标志介绍:
The argument flags must include one of the following access modes:O_RDONLY, O_WRONLY, or O_RDWR. These request opening the file read-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_IRWXU 00700 user (file owner) has read, write, and execute permission S_IRUSR 00400 user has read permissionS_IWUSR 00200 user has write permissionS_IXUSR 00100 user has execute permissionS_IRWXG 00070 group has read, write, and execute permissionS_IRGRP 00040 group has read permissionS_IWGRP 00020 group has write permissionS_IXGRP 00010 group has execute permissionS_IRWXO 00007 others have read, write, and execute permissionS_IROTH 00004 others have read permissionS_IWOTH 00002 others have write permissionS_IXOTH 00001 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);
fd :对应的文件描述符
分析题
如果父进程先打开一个文件,fork 后子进程是否可以共享使用?
文件内容
代码
#include#include #include #include #include int main(){ char buff[128] = {0}; int fd = open("myfile.txt", O_RDONLY); pid_t pid = fork(); assert(pid != -1); if (pid == 0) { read(fd, buff, 1); printf("child buff = %s\n", buff); sleep(1); read(fd, buff, 1); printf("child buff = %s\n", buff); } else { read(fd, buff, 1); printf("parent buff = %s\n", buff); sleep(1); read(fd, buff, 1); printf("parent buff = %s\n", buff); } close(fd); exit(0);}
运行结果:
结论:
由于 fork 创建的子进程的 PCB 是拷贝父进程的,子进程的 PCB 中的文件表指向打开文件的指针只是拷贝了父进程 PCB 中的值,所以父子进程共享父进程 fork 之前打开的所有文件描述符。
练习题
完成对一个文件的复制(类似命令:cp)
原文件内容为:
代码:
#include#include #include #include #include int main(void){ char buff[128] = {0}; int fdr = open("myfile.txt", O_RDONLY); assert(fdr != -1); int fdw = open("newfile.txt", O_WRONLY | O_CREAT, 0600); assert(fdw != -1); int n = 0; while (n = read(fdr, buff, 128) > 0) { write(fdw, buff, n); } close(fdr); close(fdw); exit(0);}
运行示例:
可以看到newfile.txt创建成功
系统调用和库函数的区别
区别: 系统调用的实现在内核中,属于内核空间,库函数的实现在函数库中,属于用户空间。
系统调用执行过程:
"Linux操作文件系统怎么调用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
文件
进程
系统
内容
数据
函数
参数
空间
代码
内核
字节
实际
拷贝
更多
标志
知识
过程
运行
实用
成功
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全技术课程设计实验指导书
苹果服务器如何连接
网络安全警告图片
服务器哪里可以买到cpu
Bi连接sql数据库
qq空间日志提示服务器打不开
出现新的导航数据库
网络技术对音乐发展的影响
河南耀昆邵光网络技术有限公司
余姚市云瑞网络技术有限公司
福州安卓智能产品软件开发
数据库编写查询语句
仁聚网络技术有限公司
君子在线网络安全技术
初中网络安全法律
物联网网络安全蚂蚁文库
dellemc服务器选择启动项
湖南文理学院网络安全考试
电脑怎样启用网络安全策略
软件开发师证书报考条件
秦皇岛网络技术哪个好
网络安全大会 11岁
数据库安全性解释
上海大数据软件开发正规平台
换手机不换号怎么转移数据库
深圳市聚龙网络技术有限
知网数据库检索途径
警方网络技术手段
数据库怎么调排序
中国第一个下载软件开发者