gpt4 book ai didi

c++ - 无需 fork/exec、popen() 和 system() 即可获取 linux 信息

转载 作者:太空宇宙 更新时间:2023-11-04 09:00:57 25 4
gpt4 key购买 nike

我想知道如何在不使用 fork/exec、popen() 和 system() 的情况下从 C++ 获取以下 linux 系统信息:

  1. 获取启动进程的命令字符串(名称)给定进程 ID。
  2. 向进程发送信号
  3. 捕获并显示我的程序接收到的所有信号
  4. 获取任何给定进程名称的进程 ID

如有任何提示,我们将不胜感激。

非常感谢您的宝贵时间!

最佳答案

我相信 1) 的信息包含在/proc/PID/cmdline 中

如果你想要当前进程,你可以使用/proc/self/- 当你不知道 pid 时很方便。我不太了解 C++,但在 C 中,您可以使用 open 和 read 系统调用来执行此操作,从而避免 fork 。

我认为您也可以通过操作/proc 条目来获得许多其他答案。我相信/proc/PID/status 会告诉您有关已捕获并被指定 PID 阻止和忽略的信号。

编辑:考虑更多 4) 你可以递归循环遍历/proc 中的 pid 条目来查找你给定的进程名称 - 这是我能想到的唯一没有 fork 的方法(从代码中调用“ps”作为其他建议需要 fork/exec)。您避免使用 fork 有什么特别的原因吗?

关于c++ - 无需 fork/exec、popen() 和 system() 即可获取 linux 信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21519163/

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