Apple 有一个已弃用的 C API,用于在launch.h
. API 的源代码在他们的开源网站上:https ://opensource.apple.com/source/launchd/launchd-442.26.2/liblaunch/
下面是一些要求 launchd 启动 LittleSnitchUIAgent 服务的示例代码:
#include <launch.h>
int main(int argc, const char * argv[]) {
const char *job = "at.obdev.LittleSnitchUIAgent";
launch_data_t resp, msg;
msg = launch_data_alloc(LAUNCH_DATA_DICTIONARY);
launch_data_dict_insert(
msg, launch_data_new_string(job), LAUNCH_KEY_STARTJOB);
resp = launch_msg(msg);
launch_data_free(msg);
return 0;
}
LittleSnitchUIAgent 没有意义——我是从本地服务列表中随机选择的。我离开了样本的错误检查以使其保持直截了当。
如果您还没有,我建议您仔细研究launchd 手册页和守护进程和服务编程指南。Launchd 可以启动您的进程以响应几乎任何事情:计时器、套接字连接、添加到系统的设备等等。您实际上很少需要管理自己的服务。我无法确认这一点,但我怀疑这就是他们弃用 API 的原因。