如何知道自助进程打开的各种文件是什么 在我的C++程序中,我在一个点上打开了各种文件,在这里,它执行了 FoK()/。分叉后,程序复制自身并运行。子进程将共享所有打开的文件句柄

如何知道自助进程打开的各种文件是什么 在我的C++程序中,我在一个点上打开了各种文件,在这里,它执行了 FoK()/。分叉后,程序复制自身并运行。子进程将共享所有打开的文件句柄,c++,c,linux,fork,C++,C,Linux,Fork,我的问题是,‘有没有办法知道哪些文件是打开的?’?这样我就可以关闭这些文件句柄,然后用另一个文件重新打开。” 注意:我使用的是linux机器。通过签出/proc//fd/*(或者/proc/self/fd,如果需要当前进程,可以查看linux上给定进程中打开的文件)。每个文件都有一个以相应fd命名的sym链接,该链接指向打开的文件,您可以使用readlink()找到该文件。您可以通过调用dup2()重定向任何特定的fd,将新文件的fd复制到该fd上 这就是说,由于您控制所有流程,因此只在内部跟踪

我的问题是,‘有没有办法知道哪些文件是打开的?’?这样我就可以关闭这些文件句柄,然后用另一个文件重新打开。”


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

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

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