从OS X launchd守护进程播放音频

时间:2014-08-14 10:35:36

标签: macos audio applescript launchd launch-daemon

我正在尝试从我的launchd守护程序执行Apple脚本。我的脚本只有一行,如下所示。

say "Message From Daemon!"

这总是失败并抛出此错误消息“找不到文件某个对象”。

知道为什么会这样吗?如果我从xcode(不是通过launchd启动它)和从用户上下文中运行的任何其他应用程序运行,相同的脚本可以正常工作。

2 个答案:

答案 0 :(得分:1)

使用NSSound播放声音依赖于window server,守护进程不允许连接到窗口服务器。

我假设say命令存在同样的问题。 (此工具使用语音合成管理器将输入文本转换为可听语音,并通过系统中选择的声音输出设备播放        首选项或将其保存到AIFF文件。)

答案 1 :(得分:0)

我猜你在尝试同样的事情时遇到了我原来遇到的同样的问题。 .plist文件中的路径需要更深入地指向applescript应用程序。下面是.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.namespace.script_name</string>
        <key>Program</key>
        <string>/Applications/script_name.app/Contents/MacOS/applet</string>
        <key>LowPriorityIO</key>
        <true/>
        <key>Nice</key>
        <integer>1</integer>
        <key>StartInterval</key>
        <integer>7200</integer>
    </dict>
</plist>