【问题标题】:C++ Linux: Process PID from its pathC ++ Linux:从其路径处理PID
【发布时间】:2013-04-21 17:35:24
【问题描述】:

我正在寻找一种方法来获取具有其路径的进程的当前 PID。

例如我知道firefox的路径是/usr/bin/firefox,我已经启动了它,我想在C++中找到它的PID。

我该怎么做?

【问题讨论】:

  • /proc//exe 是二进制文件的链接。您可以遍历每个进程 id 并搜索链接指向您感兴趣的可执行文件的那些。
  • 请注意,firefox 和多个其他 Linux/Unix 命令允许多次调用,因此搜索可执行文件路径可能会呈现多个结果,并且您可能无法隔离您实际需要的那个。
  • @VaughnCato 抱歉,我需要的正好相反。
  • 无论哪种方式,您都可以获得相应的路径和进程ID,因此您可以找到具有给定路径的所有进程ID或进程ID的路径。

标签: c++ linux process path pid


【解决方案1】:

看看“pgrep”程序。来源在这里,我想:http://procps.sourceforge.net/

【讨论】:

  • 非常感谢,我会检查那个!
  • 我在链接步骤上有问题。我正在尝试使用 get_proc_stats 方法(使用库而不是我自己的代码执行另一个步骤),但出现以下错误:“未定义对 `get_proc_stats' 的引用”。我正在使用“pkg-config --cflags --libs libprocps”进行编译。其他方法如openproccloseproc我没问题。
  • 我在 git repo 中推送了一个链接失败的示例:github.com/zedtux/test_libprocps
  • 我按照@BraveNewCurrency 的说法,现在它正在工作:我正在使用openproc()readproc() 方法来获取每个任务的proc_t 实例,然后比较cmd带有进程名称的字段,以便我可以从 proc_t 实例中获取 tgid
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-29
  • 1970-01-01
  • 2011-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-17
相关资源
最近更新 更多