【发布时间】:2016-03-25 15:05:43
【问题描述】:
我正在制作一个程序,它的行为方式与 shell 类似,但只支持前台进程和管道。我有多个进程写入同一个管道以及与管道的正常使用不同的一些其他属性。无论如何,我的问题是,
除了三个基本文件描述符之外,还有什么简单(自动)的方法可以关闭进程的所有文件描述符?
我问这个问题是因为我很难跟踪每个进程的所有文件描述符。有时他们会以一些不可预知的方式行事。也可能是因为我对它们的了解不是很透彻。
【问题讨论】:
-
shell 脚本还是 C?
-
很抱歉我忘了提。它是 C++。
-
添加您的代码摘录...
-
您应该真正了解如何跟踪正在使用的文件描述符。您可以在
fcntl()中查找FD_CLOEXEC参数,并且某些系统允许open()上的O_CLOEXEC。但是,要应用它,您需要知道文件描述符,以便确保当您的进程执行另一个程序时它会自动关闭。但是,这可能不是您的问题。