【问题标题】:Determine if cocoa app was started by the user or a cron/launchd job [duplicate]确定可可应用程序是由用户启动还是由 cron/launchd 作业启动 [重复]
【发布时间】:2013-07-14 22:41:53
【问题描述】:

有没有办法让 Cocoa 应用程序判断它是在交互运行还是从 cron 之类的东西运行?基本上,如果是运行命令的人,我希望 GUI 出现,但如果它是从 cron 之类的东西中调用的,那么我不希望 GUI 显示。

【问题讨论】:

  • 也许你可以实现--nogui参数
  • 当然,但我希望有一种方法可以让应用自行确定。
  • 但您将无法从脚本/终端使用 gui 运行您的应用程序
  • 如果我手动运行一个调用这个应用程序的脚本,它仍然会看到它有一个控制 TTY,并且 GUI 看起来像正常。我正在寻找类似于 perl 中的“-t 0”检查的东西。
  • 您是否对是否可以拥有 GUI 或您的应用程序是否从终端运行感兴趣?从 Finder 运行应用程序不会给它一个 TTY,但它仍然应该显示一个 GUI。

标签: cocoa launchd


【解决方案1】:

您可以使用launchctl list 命令。

不带参数,列出加载到 launchd 中的所有作业

【讨论】:

    【解决方案2】:

    听起来您正在寻找 isatty function(这可能是 perl 的 -t 测试使用的)。

    if (isatty(0)) {
        // standard input is a “tty” hence I should run interactively
    }
    

    【讨论】:

    • 从 Finder 启动应用程序时,that expression returns false。我要求提问者在 cmets 中对这个问题进行澄清;似乎 TTY 的存在并不是他们真正感兴趣的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    相关资源
    最近更新 更多