【发布时间】:2016-05-23 00:45:05
【问题描述】:
所以我正在编写一个命令行实用程序,但遇到了一个我很好奇的问题。
该实用程序可以使用文件参数调用,也可以从sys.stdin 读取。最初我使用sys.stdin.isatty() 来确定是否正在通过管道输入数据,但是,我发现如果我通过ssh server utility 远程调用该实用程序,sys.stdin.isatty() 将返回 false,尽管事实上没有实际数据正在用管道输入。
作为一种解决方法,我使用- 作为文件参数来强制从标准输入读取(例如:echo "data_here" | utility -f -),但我很想知道是否有可靠的方法来区分管道获取来自进程和管道的数据,因为调用是通过 ssh 才打开的。
系统编程不是我的强项,所以我很感谢你们能提供任何帮助。
【问题讨论】:
-
所有管道都是一样的,所以不要以为你可以。您可能需要查看进程组和父进程——但这变得非常讨厌