Java 确定父进程是否为终端 我有一个C++程序,我想确定父进程是否是一个终端。因为如果它是终端,我可以使用转义码突出显示输出,否则将显示无法读取的字符。 该解决方案需要在任何posix系统上运行
如果有人知道Java的解决方案,我也会对它感兴趣。如果我正确理解了您的问题,那么您从错误的角度看待它。不要问您的父进程是什么,而是问Java 确定父进程是否为终端 我有一个C++程序,我想确定父进程是否是一个终端。因为如果它是终端,我可以使用转义码突出显示输出,否则将显示无法读取的字符。 该解决方案需要在任何posix系统上运行,java,c++,linux,Java,C++,Linux,如果有人知道Java的解决方案,我也会对它感兴趣。如果我正确理解了您的问题,那么您从错误的角度看待它。不要问您的父进程是什么,而是问stdout的功能是什么。要在POSIX环境中实现这一点,请使用isatty() 对于stdout,isatty(stdout\u FILENO)应返回1 在Java中,如果stdin和stdout都是终端,System.console()显然会返回一个console对象,否则返回null。有关更多详细信息,请参阅。我认为POSIX中有一些东西可以做到这一点,但我想
stdout
的功能是什么。要在POSIX环境中实现这一点,请使用isatty()
对于stdout,isatty(stdout\u FILENO)
应返回1
在Java中,如果stdin和stdout都是终端,
System.console()
显然会返回一个console
对象,否则返回null
。有关更多详细信息,请参阅。我认为POSIX中有一些东西可以做到这一点,但我想不起具体细节。可能是fcntl()
?不过,我在man条目中没有看到任何相关内容,所以可能是其他内容。@celticminstrel根据手册页fcntl
代表文件控制
,似乎不是我想要的,很抱歉,但父进程是终端是没有意义的。你是说标准输出是一个终端,父进程是一个交互式shell还是其他什么?