2015-05-20 158 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

相關問題