在这种情况下使用管道会导致 write() 失败吗?

Posted

技术标签:

【中文标题】在这种情况下使用管道会导致 write() 失败吗?【英文标题】:Will write() fail in this case using pipes? 【发布时间】:2017-03-30 01:04:07 【问题描述】:

如果你 fork() 并创建了两个进程来读取和写入管道,并且子进程正在从管道读取并且父进程正在写入管道,如果子进程被写入父进程会失败在父进程有机会写入管道之前关闭写入的管道?

【问题讨论】:

附上代码示例会使问题看起来更好。 我看不出代码示例会增加什么价值。这个问题很清楚。 【参考方案1】:

关闭其管道写入端的子进程仅删除其对管道的引用,它不会导致管道“关闭”或任何类似的事情,因此不会影响父进程对它的引用反正。一般情况下,close(2) 调用也是如此。

进一步阅读:

File descriptors

【讨论】:

以上是关于在这种情况下使用管道会导致 write() 失败吗?的主要内容,如果未能解决你的问题,请参考以下文章

在这种情况下,使用 string_view 会导致不必要的字符串复制吗?

select()-ing for ready-to-write fds 会导致繁忙的循环吗?

Linux管道读/写总是会导致上下文切换吗?

PowerShell 管道添加换行符

管道的原子性 linux写操作原子性

mysql不等于走索引吗