首页 >后端开发 >C++ >如何区分 C/C 中的端子输入和管道输入?

如何区分 C/C 中的端子输入和管道输入?

Susan Sarandon
Susan Sarandon原创
2024-12-10 16:35:14170浏览

How Can I Distinguish Between Terminal and Pipe Input in C/C  ?

识别标准输入类型: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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn