gpt4 book ai didi

macos - 守护进程与 cocoa

转载 作者:行者123 更新时间:2023-12-03 16:38:30 25 4
gpt4 key购买 nike

我编写了一个 FTP 服务器,它是通过 ftpd.command 从命令行启动的。现在我想从 Cocoa 应用程序运行该命令。

我想退出应用程序,命令应保持运行。当我返回 Cocoa 应用程序时,它应该知道 FTP 服务器是否仍在运行。

有人可以帮助我吗?多谢!朱利安

最佳答案

您应该使用launchd来处理FTP服务器。它是专门为您描述的情况而设计的,即启动和管理后台服务。

您需要创建一个 launchd 配置文件,可以将其放置在以下位置之一:

  • ~/Library/LaunchAgents:用户提供的每用户代理。
  • /Library/LaunchAgents:管理员提供的每用户代理。
  • /Library/LaunchDaemons:由管理员。

守护进程是一种系统范围的服务,所有客户端都有一个实例。 代理是一种基于每个用户运行的服务。

launchd Configuration files形式为property list.

您需要创建一个 launchd 配置 plist 并将其放置在上述位置之一。您可以配置 plist,以便 launchd 在启动时或定期运行您的服务,或者响应各种操作(例如文件夹内容更改)。

要检查您的作业是否正在运行,您需要使用 Service Management framework 。您可以向 launchd 询问您的作业状态,如下所示:

CFDictionaryRef jobDict = SMJobCopyDictionary(kSMDomainUserLaunchd, CFSTR("com.your.apps.bundle.id"));

如果找不到作业,则 jobDict 将为 NULL

(如果您使用的是系统级守护程序,则可以将 kSMDomainUserLaunchd 替换为 kSMDomainSystemLaunchd)。

关于macos - 守护进程与 cocoa ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8286416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com