macos - 如何跳过将可执行打印记录到 Mac 控制台

标签 macos launchd

我正在为我的应用程序创建一个 Mac 启动代理。 Launch 代理工作正常。但是可执行的 bin 文件会打印一些控制台消息,当 exe 在终端中启动时,所有这些消息都会记录到 Mac 控制台。我怎样才能跳过将这些消息记录到 Mac 控制台 ..?

我尝试添加一个 shell 脚本作为启动 exe 的 Lauch 代理,这样可执行文件就不会将消息记录到控制台。但是脚本不会启动垃圾箱。

这是我的 Launch Agent plist 文件。

 <?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.myapp</string>
  <key>Program</key>
  <string>./bin/MyBin</string>
  <key>WorkingDirectory</key>
  <string>/Applications/MyApp/</string>
  <key>RunAtLoad</key>
  <true/>
  </dict>
  </plist>

最佳答案

您可以通过将 StandardOutPathStandardErrorPath 键添加到您的 .plist 文件来覆盖启 Action 业的 stdout 和 stderr 的默认处理。要丢弃所有输出,请添加:

<key>StandardOutPath</key>
<string>/dev/null</string>
<key>StandardErrorPath</key>
<string>/dev/null</string>

您也可以将一个或两个重定向到日志文件。

关于macos - 如何跳过将可执行打印记录到 Mac 控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11331814/

相关文章:

macos - 如何在 Mac OSX 中将应用程序添加为所有用户的登录项

macos - 捆绑到 Cocoa 应用程序中的 Git 无法在 bundle 中找到帮助程序

c - "bus error"带有(非常)简单的 opencv 程序(使用 Mac Os X)

objective-c - 有没有办法更新 launchd overrides.plist 上的 SMLoginItemBookmarks 数据

python - OS X 上的 Pylons : proper launchd plist to start and keep alive pylons server?

macos - 在 Mac OS 中暂时停止在 launchd 下工作的作业

php - 当使用 CPPFLAGS 指定目录时./configure 无法找到头文件

macos - 文件名 os x 中的不同 utf8 编码

macos - 管理员密码不适用于 OS X Yosemite

macos - 在 Mac OS X 应用程序包中打包 C 二进制文件