如果子进程在阅读时不会从写入中关闭管道会发生什么?
|
给出以下代码:
每当子进程想要从管道读取时,它必须首先关闭管道侧写入.当我删除该行关闭(pipefd [1]);从子进程的if, 如果是这样的话,当管道打开以进行读取时会发生什么?写作?没有相互排斥? 最佳答案
如果进程 – 父进程或子进程 – 不打算使用管道的写端,则应该关闭该文件描述符.类似地,对于管道的读取端.系统将假定在任何进程打开写入结束时可能发生写入,即使唯一的此类进程是当前尝试从管道读取的进程,因此系统也不会报告EOF.此外,如果您溢出管道并且仍然存在读取结束打开的进程(即使该进程是尝试写入的进程),则写入将挂起,等待读取器为写入完成留出空间.
没有;你说孩子可以写信给管道和父母.具有管道的写文件描述符的任何进程都可以写入管道.
从来没有任何相互排斥.管道写入描述符打开的任何进程都可以随时写入管道;内核确保两个并发写操作实际上是序列化的.打开管道读取描述符的任何进程都可以随时从管道读取;内核确保两个并发读操作获得不同的数据字节. 通过确保只有一个进程打开以进行写入并且只有一个进程打开以进行读取,确保单向使用管道.但是,这是一个编程决定.你可以有N个进程,写入结束打开,M进程读取结束打开(并且,思想消失,N组和M组进程之间可能存在共同的进程),并且它们都能够出乎意料地工作.但是你不可能很容易地预测在写入数据包之后将在何处读取数据包. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- c – SIGXFSZ是由内核发送的,除非有什么内容打印到stdout?
- c – waitpid和pthread_cond_wait(3)
- linux – 如何强制MySQL表被破坏?
- 如何在linux下使用anaconda安装多个ipython 3.0内核(python
- centos6.4使用man查找命令时,报错No manual entry for xxx
- ntpdate和ntpd无法在Linux上同步时钟
- linux – “rm:无法移除xxx:设备上没有剩余空间”在BTRFS
- redhat – 如果高偏移量,如何使NTP工作?
- linux – 我可以在AD网络中完全删除Windows DNS以支持BIND9
- Ubuntu下设置/修改root密码
