确定父进程是否是终端

时间:2015-07-18 17:08:01

标签: java c++ linux

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

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

1 个答案:

答案 0 :(得分:6)

如果我理解你的问题,你会从错误的角度看问题。不要问你的父进程是什么,而是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?