我认为没有一种简单的方法可以完成这项工作。在 Linux 中,应用程序可能会在启动时创建多个进程 - 例如让我们使用后缀:
localhost:~ # ps -ef|grep 后缀
根 3708 1 0 Apr24 ?00:00:35 /usr/lib/postfix/master
后缀 3748 3708 0 Apr24 ?00:00:01 qmgr -l -t fifo -u
后缀 3749 3708 0 Apr24 ?00:00:00 拾取 -l -t fifo -u -c
后缀 13504 3708 0 16:05 ? 00:00:00 清理 -z -t unix -u -c
后缀 15458 3708 0 17:45 ? 00:00:00 清理 -z -t unix -u -c
后缀 19907 3708 0 19:25 ? 00:00:00 清理 -z -t unix -u -c
进程“master”、“qmgr”、“pickup”和“cleanup”都属于应用程序后缀。通过查看第三列,您可以看到这些进程每个都属于一个父进程“主”,该列告诉您启动该进程的父进程。在我的示例中,所有进程都由 id 3708 的进程启动。另一个示例是 Apache Webserver,它在启动时创建多个 httpd 进程 - 这里进程名称都是相同的,只是计数因配置而异。
回到您想解决的问题:从我的角度来看,您可以尝试两种方法:
- 建立一个数据库,其中包含进程名称与应用程序的关联,并使用它来使用 ps 创建您的应用程序列表。
- 您将应用程序限制为仅列出显示图形用户界面的应用程序。这个列表应该很容易通过使用一些 X11 函数或类似的东西来构建......
希望这可以帮助...