1

在我的 c++ 程序中,我在执行fork(). 分叉后,程序复制自身并运行。子进程将共享所有打开的文件句柄。

我的问题是,'有没有办法知道打开的各种文件是什么?这样我就可以关闭这些文件句柄并使用不同的文件重新打开。

注意:我使用的是linux机器。

4

1 回答 1

3

通过签出/proc/<pid>/fd/*(或者/proc/self/fd如果您想要当前进程),可以查看在 linux 上的给定进程中打开了哪些文件。每个文件都有一个以对应fd命名的sym链接,链接指向打开的文件,你可以使用readlink(). 您可以使用调用dup2()将新文件的 fd 复制到该 fd 上来重定向任何特定的 fd。

也就是说,由于您控制所有流程,因此仅在内部进行跟踪可能更有意义。这也更便携。

于 2013-11-07T18:36:21.427 回答