1.打开文件

int open(const char* pathname, int flags)//用于打开一个已存在的文件
int open( const char* * pathname, int flags,mode_t mode);
//用于新建一个文件,并设置访问权限
参数介绍:
pathname:将要打开的文件路径和名称
flags : 打开标志,如 O_WRONLY 只写打开
O_RDONLY 只读打开
O_RDWR 读写方式打开
O_CREAT 文件不存在则创建//注意不要写出错了,据说是当时写内核的人写错了少些个E,所以本来是O_CREATE的变成了现在这样。
O_APPEND 文件末尾追加
O_TRUNC 清空文件,重新写入
mode: 权限 如:“0600”
返回值 :为文件描述符

2.读文件

ssize_t read( int fd, void* buff, size_t count);
参数介绍:
fd 对应打开的文件描述符
buff 存放数据的空间
count 计划一次从文件中读多少字节数据
返回值:为实际读到的字节数

3.写文件

ssize_t write( int fd, const void* * buf, size_t count);
参数介绍:
fd 对应打开的文件描述符
buff 存放待写入的数据
count 计划一次向文件中写多少数据
最后关闭文件close(fd)

4.父进程先打开一个文件,fork 后子进程是否可以共享使用?

代码如下(test.txt的内容为abcdefg):

输出内容为:

发现读出内容是ab。可以确定,父子进程读的是同一个文件,而且用的是同一个偏移量。也就是文件只被打开一次,供父子进程共享使用。
由于 fork 创建的子进程的 PCB 是拷贝父进程的,子进程的 PCB 中的文件表指向打开文件的指针只是拷贝了父进程 PCB 中的值(PCB与进程我们在计算机基础中已经讲了),所以父子进程会共享父进程 fork 之前打开的所有
文件描述符。如下图所示:

5.系统调用与库函数的区别

区别: 系统调用的实现在内核中,属于内核空间;库函数的实现在函数库中,属于用户空间。
我们写的fopen,fwrite这些都是库函数,其内部实现都是利用系统调用open,write。
系统调用执行过程如下图:

fork与操作文件的系统调用问题相关推荐

  1. Linux C: 文件操作相关的系统调用

    一.常见的文件操作相关的系统调用 普通权限的系统调用 函数 说明 int access(char *pathname,int mode) 检查对某个文件的权限 int chdir(const char ...

  2. 三十四 操作文件和目录

    如果我们要操作文件.目录,可以在命令行下面输入操作系统提供的各种命令来完成.比如dir.cp等命令. 如果要在Python程序中执行这些目录和文件的操作怎么办?其实操作系统提供的命令只是简单地调用了操 ...

  3. 在linux内核中操作文件的方法--使用get_fs()和set_fs(KERNEL_DS)

    在linux内核中操作文件的方法--使用get_fs()和set_fs(KERNEL_DS) #include <linux/kernel.h> #include <linux/mo ...

  4. 内核是如何运行ko文件的--系统调用

    内核是如何运行ko文件的–系统调用 文章目录 内核是如何运行ko文件的--系统调用 什么是系统调用 系统调用的流程 向系统中添加一个系统调用 1.在内核源码中添加自己的服务,需要编译进入内核 2.添加 ...

  5. ASP.NET 如何操作文件

    本文由chenyangasp版权所有,可以转载,复制,粘贴,并请注明出处,但不得修改! 在asp.net操作文件的所有concept都在system.io  namespace中,这个namespac ...

  6. VC 文件操作(文件查找,打开/保存,读/写,复制/删除/重命名)

    右击项目->属性->字符集:使用多字节字符集. 这样可以使用char到CString的转化. char sRead[20] = ""; CString strtest ...

  7. python中年大叔学编程_中年大叔学编程-Python简单操作文件

    原标题:中年大叔学编程-Python简单操作文件 在计算机中,经常打交道的就是各种文档,用得比较多的软件就是office和记事本来操作文件,那么我们试试用Python来简单读写文件. Open函数的用 ...

  8. 操作文件方法简单总结(File,Directory,StreamReader,StreamWrite ) - Zery-zhang

    一 基本介绍 操作文档,文件夹,需要用到的类 1 Directory (静态类) :      用于创建.移动和删除等操作通过 目录 和子 目录 DirectoryInfo (非静态): 2 File ...

  9. c# 操作文件_小练习(音乐播放器)

    form排版如图一所示,详细步骤内容请见代码块:这个小练习主要目的是为了更加熟练的掌握Path类和熟练掌握操作文件的方法: using System; using System.Collections ...

最新文章

  1. Sequence(组合数学,集合不同元素的个数)
  2. order by居然不能直接在union子句中使用
  3. 技术 Leader 怎样带跨一个团队?
  4. 不好意思,你这个加分理由不行……
  5. linux安装pip
  6. MTK:内存管理机制简单分析
  7. svn ignore 命令行用法
  8. 1.3、TetGen网格化过程之描述
  9. 实习成长之路:操作系统——CPU有哪些工作模式呢?
  10. [2018.07.12 T2] B君的第二题
  11. 根据二次曲面模型法建立区域高程异常拟合模型
  12. ResNet网络结构
  13. 深入解析内存原理:DRAM的基本原理
  14. 图像滤镜艺术---乐高像素拼图特效
  15. 阿里云上远程连接redis
  16. C4D倒角应用—样条挤压后如何正确倒角
  17. 使用滴滴mpx 开发一个小程序组件
  18. 中国智能手机集成电路(IC)行业市场供需与战略研究报告
  19. 帝国CMS内容页调栏目名称和栏目地址
  20. python正则表达式(\S+)和 \d+的含义

热门文章

  1. CSS实现的阴影效果
  2. windows残留软件卸载
  3. 网站开发之鼠标悬停简单特效实现(四)
  4. HarmonyOS之设备定位的使用与地理编码的转化
  5. 【数据结构与算法】之电话号码键盘的字母组合算法
  6. OpenGL ES之Swift使用GLSL语言渲染图片的显示
  7. 2019年第十届蓝桥杯 - 省赛 - C/C++大学B组 - H. 等差数列
  8. 41. First Missing Positive 缺失的第一个正数
  9. 计算机网络——IP地址与MAC地址
  10. 完美解决Ubuntu16.04虚拟机窗口自适应问题