如果管道的读取者忘记关闭 fd[1] 或者管道的编写者忘记关闭 fd[0] 会出现什么问题?
最佳答案
您将遇到文件句柄泄漏(只要打开文件描述符的进程正在运行)。可能发生的最糟糕的事情是,如果您有 很多 个管道,您会用完文件描述符句柄。
每个用户通常有一个软限制和一个硬限制(参见 ulimit
),还有一个系统范围的限制(尽管如果您的系统有一个有用的每个用户限制,您不太可能达到那个限制).一旦用完文件描述符句柄,就会发生奇怪的事情,例如您将无法启动新进程或其他正在运行的进程可能会停止正常工作。
大多数时候这不是什么值得担心的事情,因为大多数时候只有两个进程和一个管道,所以泄漏不会是什么大问题。不过,您通常确实想要关闭任何不再需要的文件句柄以释放资源。
关于c - 为什么要在 c 中关闭管道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23061491/