检测stdin是终端还是管道?

检测stdin是终端还是管道?

当我python从没有参数的终端执行“ ”时,它会启动Python交互式shell。

当我cat | python从终端执行“ ”时,它不会启动交互模式。不知何故,没有得到任何输入,它已检测到它已连接到管道。

我如何在C或C ++或Qt中进行类似的检测?


万千封印
浏览 497回答 3
3回答

MMTTMM

用途isatty:#include&nbsp;<stdio.h>#include&nbsp;<io.h>...&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(isatty(fileno(stdin))) &nbsp;&nbsp;&nbsp;&nbsp;printf(&nbsp;"stdin&nbsp;is&nbsp;a&nbsp;terminal\n"&nbsp;);else &nbsp;&nbsp;&nbsp;&nbsp;printf(&nbsp;"stdin&nbsp;is&nbsp;a&nbsp;file&nbsp;or&nbsp;a&nbsp;pipe\n");(在Windows上,它们以下划线为前缀:_isatty,_fileno)

慕码人8056858

调用stat()或fstat()并查看是否在st_mode中设置了S_IFIFO。
打开App,查看更多内容
随时随地看视频慕课网APP