为了账号安全,请及时绑定邮箱和手机立即绑定

检测stdin是终端还是管道?

检测stdin是终端还是管道?

C++ C
万千封印 2019-08-02 14:16:30
检测stdin是终端还是管道?当我python从没有参数的终端执行“ ”时,它会启动Python交互式shell。当我cat | python从终端执行“ ”时,它不会启动交互模式。不知何故,没有得到任何输入,它已检测到它已连接到管道。我如何在C或C ++或Qt中进行类似的检测?
查看完整描述

3 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

用途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上,它们以下划线为前缀:_isatty_fileno


查看完整回答
反对 回复 2019-08-02
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

调用stat()或fstat()并查看是否在st_mode中设置了S_IFIFO。


查看完整回答
反对 回复 2019-08-02
  • 3 回答
  • 0 关注
  • 496 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信