如果我在linux命令行上运行'python',并且我没有提供任何命令行参数,程序会显示欢迎消息并等待用户输入。我假设在引擎盖下,程序将消息发送到“标准输出”流并对“标准输入”流执行阻塞读取。
但是,如果我通过管道来自另一个进程的输出来间接调用python(例如echo“hello”| python),则python不会输出该消息。不知何故,它可以区分原始场景(a),其中“标准输入”流由其他进程填充,(b)“标准输入”流从键盘填充。
这是如何实现的?我一直认为这个信息不适用于应用程序。 Java应用程序如何能够实现这种差异化?
答案 0 :(得分:1)
的Python:
import os
import sys
if os.isatty(sys.stdin.fileno()):
print "is a tty"
else:
print "not a tty"
我不知道使用默认库的Java等价物; Jython似乎使用本机代码(jna-posix)。
更新 - 这里有两种可能性:
null
(请参阅here和here)