繁体   English   中英

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

[英]How to know what are various files opened by self process

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM