【问题标题】:Launchd Relaunch App on Quit退出时重新启动应用程序
【发布时间】:2009-07-26 18:51:49
【问题描述】:

如果用户没有选择从顶部栏中选择“退出”,我想知道如何设置 Launchd 以重新启动我的应用程序。在某些情况下,应用程序可能会发生某些事情,并且可能会强制退出,如果选择了首选项,我希望它自动重新启动。在发帖之前我已经研究过了,我听说 Launchd 很擅长做这件事。有人对如何完成它有任何建议吗?

感谢您的帮助。

【问题讨论】:

    标签: cocoa launch launchd quit


    【解决方案1】:

    让您的程序在应用运行时在用户的主文件夹中写入一个空的 .something 文件。当应用程序正常退出时删除 .something 文件。 现在您可以编写一个小脚本(AppleScript 或 shell 脚本)来检查您的应用程序是否正在运行,以及是否应该运行(通过检查 .something 文件)。然后,如果需要,该脚本可以重新启动应用程序。 您可以使用 launchd 安排脚本在启动时自动运行。

    【讨论】:

    • 嗨 Diederik: 好主意,但我对此有一个疑问。那个问题是:我应该什么时候运行脚本?我可以将其设置为监视应用程序是否以某种方式关闭或类似情况吗?
    • 脚本应该一直在运行。在脚本中,您应该使用睡眠时间(如 Unix sleep(10) ),以便脚本不会使用太多 CPU。除了 Launchd,您还可以在用户的​​登录项中添加脚本,这样首选项设置只会对当前用户产生影响(我猜这应该是首选方式)。
    • 感谢 Diederik 的建议。那么,您是说脚本应该每 10 秒检查一次该文件吗?然后如果它在那里,它会尝试打开应用程序(如果应用程序是打开的,那么它就不会看起来好像发生了任何事情)。但是,我假设没有,如果应用程序退出,有没有办法获得通知?似乎这样会更容易。
    【解决方案2】:

    您可以使用 KeepAlive 的成功退出设置,仅在应用未正常退出时重新启动。有关详细信息,请参阅 this Mac OS X Hints entry 和/或 launchd.plist 手册页。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-10
      • 2010-12-22
      • 2011-01-16
      • 1970-01-01
      • 2018-01-15
      • 2018-03-04
      • 1970-01-01
      相关资源
      最近更新 更多