0

我可以像这样使用 launchctl 启动应用程序:launchctl submit -l ProgramName -- open -g -b com.company.ProgramName 并且效果很好!我可以杀死应用程序,即使它崩溃它也会重新运行。

但是当我注销或重新启动 Mac 时,我的进程不再运行。或者,在某些情况下,它不是使用 ProgramName(这是我的应用程序名称)运行,而是使用 ProgramName.app/Contents/MacOS/program_name 中的可执行文件的名称运行

这种情况与 plist 文件有关。我运行命令 launchctl -w /Users/my_username/Library/LaunchAgents 并且过程正常!但是重启后就看不到了。

我更喜欢第一种加载进程的方法,有什么建议为什么进程在重启后不会自动加载?

4

1 回答 1

0

我相信您需要将“RunAtLoad”设置为“true”,以便在用户登录时启动您的应用程序。

但是在使用“提交”时,无法从命令行设置 RunAtLoad。至少在我在线查看的 launchctl.c 版本中没有。

看起来您必须使用“加载”创建一个 .plist 文件,而不是使用“提交”。

更烦人的是,launchctl 的“加载”,不能将标准输入作为 .plist 文件名的输入,无论是无参数,还是名称“-”。不好意思,可能launchctl的开发者不是Unix背景。这意味着你被迫在文件系统的某个地方乱扔你的短命文件,至少在你加载它之前。

于 2011-09-12T05:38:35.917 回答