识别标准输入类型:C/C 中的终端与管道
在 Python 交互式 shell 中,不带参数执行“python”会启动REPL 接口。然而,通过终端运行“cat | python”会绕过交互模式,这表明Python将stdin(标准输入)检测为管道。在 C/C 或 Qt 中如何做出类似的区分?
解决方案:利用 isatty()
检测标准输入是否连接到终端或在 C/C 中使用管道,使用函数 isatty():
#include <stdio.h> #include <io.h> ... if (isatty(fileno(stdin))) { printf("stdin is a terminal\n"); } else { printf("stdin is a file or a pipe\n"); }
在 Windows 平台上,函数名称为带下划线前缀:
if (_isatty(_fileno(stdin))) { printf("stdin is a terminal\n"); } else { printf("stdin is a file or a pipe\n"); }
以上是如何区分 C/C 中的端子输入和管道输入?的详细内容。更多信息请关注PHP中文网其他相关文章!