gpt4 book ai didi

c++ - 如何知道自己进程打开的各种文件是什么

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:55:36 30 4
gpt4 key购买 nike

在我的 C++ 程序中,我在执行 fork() 的位置打开了各种文件。 fork 后程序会 self 复制并运行。子进程将共享所有打开的文件句柄。

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

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

最佳答案

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

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

关于c++ - 如何知道自己进程打开的各种文件是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19843766/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com