我需要通过它的名字来获取进程的PID。我查看docs,但似乎只有在spawn()
例如,我需要获得已经工作的FireFox的PID。
我正在编写用于监控微服务的小应用程序。只有一项服务可以同时运作。
答案 0 :(得分:2)
进程没有名称,因此无法通过搜索可能或可能不代表名称的字符串来查找PID。什么进程有fork()ed时使用的命令。因此,当您使用ps
时,您看到的“名称”实际上是 argv [0] ,正如Adam指出的那样,您可能拥有数百个具有相同命令的进程...
可以使用pthread_setname()为线程命名。在D set / get中,使用Thread.name property完成线程名称。问题是,在大多数情况下,开发人员不设置线程名称......
您可以通过实现readproc(http://procps.cvs.sourceforge.net/viewvc/procps/procps/proc/readproc.c?view=markup)之类的内容来获取正在运行的进程列表,然后对需要PID的进程进行sarching,但这不能保证有效。