【问题标题】:Playing audio from OS X launchd daemon从 OS X launchd 守护进程播放音频
【发布时间】:2014-08-14 10:35:36
【问题描述】:

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

say "Message From Daemon!"

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

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

【问题讨论】:

  • 守护进程无法显示 UI 消息,如果它也无法输出音频,我也不会感到惊讶。检查控制台日志,看看是否有任何线索。
  • 我猜也一样。但我无法在控制台日志中找到任何内容。

标签: macos audio applescript launchd launch-daemon


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我猜你在尝试同样的事情时遇到了同样的问题。 .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>
    

    【讨论】:

    • 我的守护进程不是苹果脚本。我正在使用 NSAppleScript -> executeAndReturnError 方法从我的守护程序运行一个苹果脚本。
    • 对不起,我误会了
    猜你喜欢
    • 2012-05-17
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    相关资源
    最近更新 更多