【问题标题】:LaunchEvents key unrecognized in launchd plist (detecting USB device)启动 plist 中无法识别 LaunchEvents 键(检测 USB 设备)
【发布时间】:2013-03-13 21:59:04
【问题描述】:

我想在将 USB 设备插入 Mac OS X 系统时启动特定应用程序。我遵循了this SO post 中给出的食谱。但似乎无法识别LaunchEvents 密钥:当我重新启动系统时,我在控制台上看到以下消息:

com.apple.launchd.peruser.501[173]  (com.example.program) Unknown key for dictionary: LaunchEvents

我运行的是 OS X 10.6.8,这个版本的 OS X 完全有可能不支持 xpc_events。如果是这种情况,我的替代方案是什么?

(作为第二个较小的问题:有没有办法在不重新启动系统的情况下强制重新读取我的 .plist 文件?这会加快调试时间!)

~/Library/LaunchAgents/com.example.plist 的全部内容如下。 (请注意,为了调试,我只是尝试使用 /usr/bin/open 启动 Terminal.app。一旦我完成了这么多工作,我将换入我的真实程序。)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//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.program</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/bin/open</string>
      <string>/Applications/Utilities/Terminal.app</string>
    </array>
    <key>LaunchEvents</key>
    <dict>
      <key>com.apple.iokit.matching</key>
      <dict>
        <key>com.apple.device-attach</key>
        <dict>
          <key>idProduct</key>
          <integer>8963</integer>
          <key>idVendor</key>
          <integer>1659</integer>
          <key>IOProviderClass</key>
          <string>IOUSBDevice</string>
          <key>IOMatchStream</key>
          <true/>
        </dict>
      </dict>
    </dict>
  </dict>
</plist>

【问题讨论】:

    标签: macos plist launchd


    【解决方案1】:

    要重新加载,先卸载再加载:

    launchctl unload ~/Library/LaunchAgents/com.example.plist
    launchctl load ~/Library/LaunchAgents/com.example.plist
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 2011-11-05
      • 2021-01-19
      相关资源
      最近更新 更多