gpt4 book ai didi

macos - OS X 通过套接字启动

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

我试图找出一种在 OS X 服务器上触发 launchd 守护程序的方法。我发现我可以设置 launchd 守护程序来监听特定的套接字连接(tcp 端口),该连接将在联系时执行脚本。我已经成功地完成了所有这些,除了当我打开一个到套接字的连接时(为了使用 telnet 进行测试),即使在我断开套接字连接之后,脚本也会无限期地执行。

启动 plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.app</string>
<key>Program</key>
<string>/usr/bin/true</string>
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SockServiceName</key>
<string>1234</string>
</dict>
</dict>
<key>inetdCompatibility</key>
<dict>
<key>Wait</key>
<true/>
</dict>
</dict>
</plist>

有谁知道为什么脚本会一次又一次地被调用?我的目标是在从客户端建立套接字连接时只执行一次脚本......

任何帮助表示赞赏,文斯

最佳答案

通过指定 Wait = trueinetdCompatibility你告诉launchd你的应用程序负责调用accept的字典在监听套接字上使用挂起的连接之一。如果不这样做,连接将在监听套接字上保持排队,导致 launchd 认为您的应用程序还有新的工作要做。您可以确保您的应用程序调用 accept当启动时使用挂起的连接,或指定 Wait = false已开通调用accept代表你。

关于macos - OS X 通过套接字启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17457964/

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