【发布时间】:2011-07-12 17:24:44
【问题描述】:
是否可以从launchd 守护进程中使用execve?我想成为守护进程的进程使用 fork() 后跟 execve 启动了几个子进程,但documentation for creating launchd daemons 指出“调用 fork 后跟 exec”是不行的。这是否意味着我不能从守护进程创建子进程?
【问题讨论】:
标签: c++ macos daemon launchd execve
是否可以从launchd 守护进程中使用execve?我想成为守护进程的进程使用 fork() 后跟 execve 启动了几个子进程,但documentation for creating launchd daemons 指出“调用 fork 后跟 exec”是不行的。这是否意味着我不能从守护进程创建子进程?
【问题讨论】:
标签: c++ macos daemon launchd execve
AFAIK,你可以 fork 和 exec 就好了。关键点是这一点:“你不能分叉你的进程并让父进程退出。” 事情是,launchd “监视”你的服务。如果您的服务退出,它会重新启动。这意味着它也可能不会守护进程(守护进程是指经典的生成一个新进程,创建一个新进程组,退出父进程,子进程继续存在方案)。
我想你应该确保在退出主进程之前杀死/退出你的子进程,以免乱扔环境。
【讨论】: