如何知道自我进程打开的各种文件是什么

时间:2013-11-07 18:27:13

标签: c++ c linux fork

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

我的问题是,'有没有办法知道哪些文件是开放的?这样我就可以关闭那些文件句柄并用另一个文件重新打开。'

注意:我正在使用linux机器。

1 个答案:

答案 0 :(得分:3)

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

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