【问题标题】:how to get process id from process name in linux programatically如何以编程方式从Linux中的进程名称获取进程ID
【发布时间】:2015-05-20 14:12:12
【问题描述】:

在我的项目中,我们使用 ACE(自适应通信环境)中间件来编写可在 Windows 和 Linux 上运行的独立于操作系统的代码。

要求是从进程名称中获取进程ID。 由于 ACE 不支持这一点,我们将不得不使用特定于平台的宏来分隔 windows 和 linux 的代码。

对于 Windows,我必须使用 EnumProcesses 或 CreateToolhelp32Snapshot 中的任何一个

如何在 linux 上使用 API 做同样的事情?

编程语言是 C++

【问题讨论】:

    标签: linux ace


    【解决方案1】:

    如果我正确理解你的问题,你可以从 c++ 中做到这一点

    char buf[512];
    FILE *cmd_pipe = popen("pidof -s process_name", "r");
    
    fgets(buf, 512, cmd_pipe);
    pid_t pid = strtoul(buf, NULL, 10);
    
    pclose( cmd_pipe );  
    

    这是另一个例子:Get process id by name in Linux using C++

    【讨论】:

    • 看起来不错。但即使在这里,我们也使用 'pidof' 命令。有没有类似Windows的API接口?
    • 我不确定是否存在 API。提升库也许。在标准库中存在一个函数,该函数返回应用程序的进程 ID。 getpid() 返回调用进程的进程 ID 或 getppid() 返回调用进程的父进程 ID。来源:linux.die.net/man/2/getpid
    猜你喜欢
    • 2012-03-14
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 2011-05-05
    • 2020-11-03
    • 1970-01-01
    • 2014-11-03
    相关资源
    最近更新 更多