我有一个场景,我为两个孩子和父母之间的沟通创建了管道。 Parent将(使用写入函数)数据写入管道并关闭相应的文件描述符。问题是当我想再次将数据写入管道时,write函数返回错误代码-1。我认为这是因为写入结束在前一次迭代中已经关闭。然后如何在关闭一次后打开相应的文件描述符。
我尝试使用open()函数,它需要一些文件的路径作为争论。但我没有在我的应用程序中使用任何文件。我有简单的文件描述符(int arr [2])。
是否可以通过管道实现上述方案????
答案 0 :(得分:11)
一旦管道关闭,它就会关闭。你不能把它带回来。
如果你想写更多内容,请不要先关闭它 - 就像那样简单。
答案 1 :(得分:1)
要知道unix下与文件相关的任何内容(管道也是某种文件):文件名仅用于打开文件。稍后直到文件打开,它将永久可用,直到关闭,名称永远不会再次使用。当有人在打开时删除另一个窗口中的文件时,只是名称消失了,而不是文件。这意味着:
了解这一点可能有助于理解,为什么再次“重新打开”文件,管道或任何类似的东西几乎是不可能的。文件名和描述符的生命周期不同。
唯一的例外是stdout和stderr,其描述符总是被称为1和2。