Jac*_*ijm 13 launcher process .desktop
情况是这样的:
在(下一版本)Unity 快速列表编辑器上工作时,我想添加一种可靠的“重新启动”启动器图标方式。为此,我需要删除图标(编辑 gsettings)并将其替换在同一位置。到目前为止没有问题。但是,如果有问题的应用程序正在运行,用户可能会丢失数据,因为当它的图标从启动器中删除时,应用程序将退出。我需要的是找到一个应用程序的进程名,让在运行,如果应用程序正在运行的进程列表编辑器检查,并发送警告信息给用户的图标无法重新启动的可靠方法,如果该应用程序跑步。
到目前为止我所做的是让编辑器查看桌面文件,读取命令,还读取命令,从目录部分剥离,并进一步查看桌面文件命令可能引用的可能的远程脚本,查找字符串开头和 ”。/”
尽管该方法似乎适用于我测试过的所有应用程序,但我觉得必须有一种更简单的方法以“一体式”方式解决问题......
在那儿?
也欢迎提出捕捉更多特殊情况的建议!
一般情况下没有办法解决这个问题。无论您想出什么机制,我相信总是有可能编写出一个让您无法识别的流程,除非您首先修改流程启动的方式以便以这种方式跟踪它们。
Upstart 必须处理完全相同的问题来跟踪守护进程是否仍在运行,并且 Upstart 作业作者必须指定 Upstart 跟踪的详细信息(分叉数量)。鉴于暴发户在没有帮助的情况下无法管理它,我认为你也不能。暴发户甚至可以控制流程的启动方式,我认为你不在这里。
我认为你能做的最好的就是你已经在做的事情。查看/proc/<pid>/stat和/proc/<pid>/cmdline是一种相当通用的方法,但仍然无法捕获所有情况。该pgrep命令将其包装起来。如果您还没有使用pgrep,请查看pgrep 联机帮助页以获取可以匹配的选项。
说了这么多,我不相信你真的需要这样做。如果您无法跟踪该过程,那么我也不明白 Unity 如何做到这一点。更好的方法不是首先消除应用程序崩溃吗?我会详细了解您的应用程序崩溃的原因(这肯定是某个地方的错误?),而不是像您所描述的那样尝试解决它。我想知道这是否只影响通过 DBus 回调 Unity 以获得额外功能的Unity 感知应用程序?