我一直在設置一個launchd.plist
XML,每次安裝特定的USB設備時都會運行該XML。我按照xpc_events(3) man page上的說明進行操作,並且每次安裝設備時都會運行該應用程序。launchd.plist每10秒運行一次而不是一次
我遇到的問題是,只要設備仍然安裝,應用程序就會每隔10秒再次運行一次。我該如何設置它,以便在設備插入USB端口時僅運行一次?
<?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.myapp.agent</string>
<key>Program</key>
<string>/Applications/MyApp.app/Contents/MacOS/MyAgent</string>
<key>LaunchEvents</key>
<dict>
<key>com.apple.iokit.matching</key>
<dict>
<key>com.apple.device-attach</key>
<dict>
<key>idVendor</key>
<integer>2316</integer>
<key>idProduct</key>
<integer>4096</integer>
<key>IOProviderClass</key>
<string>IOUSBDevice</string>
<key>IOMatchLaunchStream</key>
<true/>
</dict>
</dict>
<key>com.apple.notifyd.matching</key>
<dict>
<key>com.apple.interesting-notification</key>
<dict>
<key>Notification</key>
<string>com.apple.interesting-notification</string>
</dict>
</dict>
</dict>
</dict>
</plist>
順便說一句,如果您不IOMatchLaunchStream設置爲true,那麼xpc_set_event_stream_handler不作任何區別,你的應用程序儘快重新推出了個遍你放棄了它。只是一個有用的提示。每個'launchd.plist'手冊頁 – dgatwood
,'KeepAlive'的默認值是'false' – Ford