为什么在c中关闭管道?

时间:2014-04-14 13:31:34

标签: c pipe

如果管道的读者忘记关闭fd [1]或者管道的作者忘记关闭fd [0]会出现什么问题?

2 个答案:

答案 0 :(得分:1)

您将遇到文件句柄泄漏(只要打开文件描述符的进程正在运行)。可能发生的最糟糕的事情是,如果你有很多的管道,你就会用完文件描述符句柄。

每个用户通常有一个软限制和一个硬限制(请参阅ulimit),还有系统范围的限制(如果您的系统具有有用的每用户限制,则不太可能达到此限制)。一旦用完文件描述符句柄,就会发生奇怪的事情,比如你将无法启动新进程或其他正在运行的进程可能无法正常工作。

大部分时间这都不用担心,因为大多数时候只有两个进程和一个管道,所以泄漏不是什么大问题。不过,你通常真的想要关闭任何你不再需要的文件句柄来释放资源。

答案 1 :(得分:0)

给定进程没有资源无限运行。进程可以创建的文件,套接字的数量也是如此。如果您的进程再次请求新的FD,则在使用后未能关闭FD可能会导致类似于内存泄漏的内容。

检查ulimit允许的打开文件数。您可以尝试在不关闭的情况下创建新描述符。你应该很快用完它。