我正在编写一个命令行实用程序,遇到了一个问题很好奇。
该实用程序可以使用文件参数调用,也可以从sys.stdin
读取。最初,我使用sys.stdin.isatty()
来确定数据是否通过管道传入,但是,我发现如果通过ssh server utility
远程调用实用程序,sys.stdin.isatty()
将返回false,尽管实际上没有数据被输送进来。
为了解决这个问题,我使用“-”作为文件参数来强制从stdin中读取(例如:echo "data_here" | utility -f -
),但我很想知道是否有一种可靠的方法来区分获取来自进程的数据和仅因为通过ssh进行调用而打开的管道。
系统编程不是我的强项,所以非常感谢你们的帮助。