【问题标题】:Determine whether the parent process is a terminal判断父进程是否为终端
【发布时间】:2015-10-08 05:16:15
【问题描述】:

我有一个 C++ 程序,我想确定父进程是否是终端。因为如果它是终端,我可以使用转义码突出显示输出,否则将显示不可读的字符。 该解决方案需要在任何 posix 系统上运行。

如果有人知道 Java 的解决方案,我也会对此感兴趣。

【问题讨论】:

  • 我认为 POSIX 中有一些东西可以做到这一点,但我不记得具体细节了。可能是fcntl()?不过,我在 man 条目中没有看到任何相关内容,所以也许是别的东西。
  • @celticminstrel 根据手册页fcntl 代表file control,似乎不是我想要的
  • 对不起,父进程是终端 是没有意义的。你的意思是标准输出是终端父进程是交互式shell还是别的什么?

标签: java c++ linux


【解决方案1】:

如果我正确理解了您的问题,那么您是从错误的角度看待问题。不要问你的父进程是什么,而要问stdout 的能力是什么。要在 POSIX 环境中执行此操作,请使用 isatty()

对于标准输出,isatty(STDOUT_FILENO) 应该返回 1

在 Java 中,System.console() 显然会返回一个 Console 对象,如果 stdin 和 stdout 都是终端,否则 null。详情请见How can I check if a Java program's input/output streams are connected to a terminal?

【讨论】:

    猜你喜欢
    • 2020-02-06
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 2010-12-05
    • 2011-07-27
    • 1970-01-01
    • 2021-07-12
    • 2010-10-17
    相关资源
    最近更新 更多