美文网首页
25.父子进程对文件的操作

25.父子进程对文件的操作

作者: 辉神来了 | 来源:发表于2019-11-29 13:08 被阅读0次
子进程继承父进程中打开的文件

(1)上下文:父进程先open打开一个文件得到fd,然后在fork创建子进程。之后在父子进程中各自write向fd中写入内容
(2)测试结论是:接续写。实际上本质原因是父子进程之间的fd对应的文件指针是彼此关联的(很像O_APPEND标志后的样子)
(3)实际测试时有时候会看到只有一个,有点像分别写。但是实际不是,原因是父进程在写完后关闭了fd导致子进程无法写入

父子进程各自独立打开同一文件实现共享

(1)父进程open打开1.txt然后写入,子进程打开1.txt然后写入,结论是:分别写。原因是父子进程分离后才各自打开的1.txt,这时候这两个进程的PCB已经独立了,文件表也独立了,因此2次读写是完全独立的。
(2)open时使用O_APPEND标志看看会如何?实际测试结果标明O_APPEND标志可以把父子进程各自独立打开的fd的文件指针给关联起来,实现分别写。

总结

(1)父子进程间终究多了一些牵绊
(2)父进程在没有fork之前自己做的事情对子进程有很大影响,但是父进程fork之后在自己的if里做的事情就对子进程没有影响了。本质原因就是因为fork内部实际上已经复制父进程的PCB生成了一个新的子进程,并且fork返回时子进程已经完全和父进程脱离并且独立被OS调度执行。
(2)子进程最终目的是要独立去运行另外的程序

相关文章

  • 25.父子进程对文件的操作

    子进程继承父进程中打开的文件 (1)上下文:父进程先open打开一个文件得到fd,然后在fork创建子进程。之后在...

  • linux API记录

    文件内容操作 进程操作

  • 文件系统之文件描述符

    Linux文件系统结构 调用Open函数会发生什么 对同一个文件打开多次会怎样 父子进程的文件关系 重定向的实现 ...

  • 父进程、子进程、线程之间的关系

    父、子进程 fork子进程之后,操作系统会复制一个与父进程完全相同的子进程,虽说是父子关系,但是在操作系统看来,他...

  • Linux文件操作

    文件操作 (Linux文件操作)) [文件|目录] Linux文件操作:为了对文件和目录进程处理,你需要用到系统...

  • Mac 常用终端命令

    1. 路径操作 2. 文件操作 3. 进程操作

  • Golang os包与设置配置文件路径

    一、os包的学习与使用(文件,目录,进程的操作) 参考golang语言中os包的学习与使用(文件,目录,进程的操作...

  • LInux-基本指令

    1.基本文件和目录的操作 2.系统,进程,网络 系统操作 进程操作 网络操作 3.其他工具 日期

  • Linux系统编程(四) ------ 进程间通信

    进程是设计和分析操作系统的有力工具。然而不同的进程之间.即使是具有家族联系的父子进程.都具有各自不同的进程映像。由...

  • 跨进程文件锁 - FileChannel

    背景 当有多个进程或者多个应用同时操作文件时 , 会并行往文件中写入字节 , 如何保证多个进程中文件写入或者操作当...

网友评论

      本文标题:25.父子进程对文件的操作

      本文链接:https://www.haomeiwen.com/subject/edgdwctx.html