2013-03-28 126 views
4

我想在Linux下獲得一個名爲process name的進程ID。通過名稱獲取進程ID

有沒有簡單的方法來做到這一點?

我還沒有找到任何可以輕鬆使用的C++!

+0

取決於您的「易於使用」的定義。 –

+0

如果有多個可執行文件的實例在運行,該怎麼辦? – trojanfoe

+0

您可以隨時查看'ps','top'的來源(以查看他們獲得他們的進程列表的位置),甚至更好,'killall'(查看如何爲您提供的名稱查找PID)。 – us2012

回答

3

您可以使用/proc中的信息。

Here就是一個例子。

4

如果要爲 '容易使用',

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); 

是要走的路。

是的,這很醜,我知道。閱讀pidof源代碼更好。

+0

嗯......我不能在C++程序中使用它,我可以嗎? –

+0

你最初的答案有什麼問題?這是現在醜陋的C代碼(撤回我的upvote)。 – Walter

+0

pidof不返回pid的事實是錯誤的,它**將pid打印到標準輸出(並在成功時返回0)。 – shakurov