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

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

Susan Sarandon
发布: 2024-12-10 16:35:14
原创
145 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板