2013-03-28 109 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