gpt4 book ai didi

c - 如何在C中的FreeBSD中获取进程的当前工作目录?

转载 作者:行者123 更新时间:2023-12-04 10:35:27 25 4
gpt4 key购买 nike

目前我正在尝试将用 C 编写的终端模拟器从 Linux 移植到 FreeBSD。
但是终端会尝试从父进程获取当前工作目录 (CWD)。

它通过访问 /proc/$PID/cwd 来做到这一点。 .

现在我正在寻找一种方法来用在 FreeBSD 上运行的东西来替换这个功能。

那么如何从 FreeBSD 的进程中获取 CWD?

甚至有符合 POSIX 的解决方案吗?

我知道我可以通过 getcwd 从我的过程中获取 CWD但我需要父进程的 CWD,我只知道 PID。

最佳答案

嗯,实际上你有两种可能性。其中之一是使用 shell 实用程序,如 lsof -p , fstat -p (正如我在上面的评论中提到的)或另一个名为 procstat 的实用程序如所述 here .与 procstat解决方案将如下所示:

procstat -f <pid> | awk '$3 == "cwd" { print $10 }'

另一种可能的解决方案是使用 libprocstat库调用,特别是 procstat_getfiles()获取 C 程序中的完整信息。看看 procstat sources获取 API 使用示例。

关于c - 如何在C中的FreeBSD中获取进程的当前工作目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27145686/

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