如何通过名称获取进程的PID?
How to get PID of process by name?
我需要通过名称获取进程的 PID。我查看了 docs,但似乎只有在使用 spawn()
手动调用进程时我才能获得 PID
例如,我需要获取已经运行的 FireFox 的 PID。
我正在编写用于监控微服务的微型应用程序。一次只能使用一项服务。
进程没有名称,因此无法通过搜索可能代表也可能不代表名称的字符串来找到 PID。进程确实有的是 fork()ed 时使用的 command。所以你在使用 ps
时看到的 "name" 实际上是 argv[0],正如 Adam 指出的那样,你可能有数百个进程使用相同的命令...
可以使用 pthread_setname(). In D set/get the thread name is done using the Thread.name property 为线程命名。问题是在大多数情况下开发人员不会设置线程名称...
您可以通过实现类似 readproc (http://procps.cvs.sourceforge.net/viewvc/procps/procps/proc/readproc.c?view=markup) 的方法来获取 运行 个进程的列表,然后搜索您需要其 PID 的进程,但这不能保证有效。
我需要通过名称获取进程的 PID。我查看了 docs,但似乎只有在使用 spawn()
例如,我需要获取已经运行的 FireFox 的 PID。
我正在编写用于监控微服务的微型应用程序。一次只能使用一项服务。
进程没有名称,因此无法通过搜索可能代表也可能不代表名称的字符串来找到 PID。进程确实有的是 fork()ed 时使用的 command。所以你在使用 ps
时看到的 "name" 实际上是 argv[0],正如 Adam 指出的那样,你可能有数百个进程使用相同的命令...
可以使用 pthread_setname(). In D set/get the thread name is done using the Thread.name property 为线程命名。问题是在大多数情况下开发人员不会设置线程名称...
您可以通过实现类似 readproc (http://procps.cvs.sourceforge.net/viewvc/procps/procps/proc/readproc.c?view=markup) 的方法来获取 运行 个进程的列表,然后搜索您需要其 PID 的进程,但这不能保证有效。