2015-05-20 425 views
0

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

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

对于Windows,我将不得不使用其中任一 - EnumProcesses或CreateToolHelp32Snapshot函数

如何做到在使用API​​的Linux一样的吗?

编程语言是C++

回答

0

如果我正确理解你的问题,你可以从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++

+0

看起来不错。但即使在这里,我们使用'pidof'命令。有没有类似于Windows的API接口? –

+1

我不确定,如果现有API。也许提升lib吧。在standart lib中存在一个函数,它返回应用程序的进程ID。 getpid()返回调用进程的进程ID或getppid()返回调用进程的父进程ID。来源:http://linux.die.net/man/2/getpid – fecub