我有一个进程名称,我必须向该进程发送一个kill()
信号,但我需要其PID来调用kill()
。我只想使用:在不使用popen()或system()的情况下通过名称查找进程的PID
popen("pidof process_name");
作为最后一件事。有没有其他方法可以找出进程的PID?我能想到的一种方式是向该进程发送套接字请求并询问其PID。
另一种方式是一个简单的代码,我写了一点太复杂:做什么pidof command's source code其实就是做(它使用一个函数调用find_pid_by_name()
但在做很多事情)。
如果没有简单的解决方案是可能的,我已经做到这一点:
system("pkill <process_name>");
,并检查它的返回码。但是,在所有的Linux机器上肯定可以使用pkill吗?
应该是非常直接的使用boost :: regex和boost :: filesystem我认为 – 2008-12-17 16:33:38
我曾经看过pidof的strace输出,并认为它是以同样的方式。 (可能在两者之间有所变化) – 2008-12-17 16:35:09