如何确定应用程序的进程名称?

情况就是这样:

继续(下一版本)Unity快速列表编辑器,我想添加一个“重启”启动器图标的可靠方法。 为此,我需要删除图标(编辑gsettings)并将其替换为相同的位置。 到目前为止没问题。 但是,如果有问题的应用程序正在运行,用户可能会丢失数据,因为当应用程序从启动器中删除图标时,应用程序将退出。 我需要的是一种可靠的方法来查找应用程序的进程名称,让编辑器在应用程序运行时检查正在运行的进程列表,并向用户发送警告消息,如果应用程序是,则无法重新启动图标运行。

我到目前为止所做的是让编辑器查看桌面文件,读取命令,还读取命令,从目录部分剥离,并进一步查看桌面文件命令可能引用的可能的远程脚本,查找字符串开始用“./”

虽然这个方法似乎适用于我测试过的所有应用程序,但我觉得必须有一种更简单的方法以“一体化”方式来解决问题…

在那儿?

此外,欢迎提出更多特殊情况的建议!

在一般情况下无法解决这个问题。 无论你提出什么样的机制,我相信总是有可能编写一个躲过你的流程,除非你首先修改流程的启动方式,以便以这种方式跟踪流程。

Upstart必须处理完全相同的问题,以跟踪守护进程是否仍在运行,并且新贵作者必须指定要跟踪的upstart的详细信息(分叉数)。 鉴于新贵无法在没有帮助的情况下管理它,我认为你也不能。 而且暴发户甚至可以控制流程的启动方式,我认为你不在这里。

我认为你能做的最好的就是你已经在做的事情。 查看/proc//stat/proc//cmdline是一种相当普遍的方法,但仍然无法捕捉到所有情况。 pgrep命令包装了这个。 如果您尚未使用pgrep ,请查看pgrep联机帮助页以获取可以匹配的选项。

说了这么多,我不相信你真的需要这样做。 如果你无法跟踪这个过程,那么我也看不到Unity如何做到这一点。 首先消除应用程序崩溃是不是更好的方法? 我会详细研究你的应用程序崩溃的原因(肯定是某个地方的错误?),而不是像你所描述的那样试图解决它。 我想知道这是否只会影响通过DBus回调Unity以获得额外function的 Unity感知应用程序?

xprop命令(后跟alt-tab到相关的应用程序窗口,然后在窗口中单击一次)似乎对我有用。