stdin がターミナルかパイプかを検出しますか? 質問する

stdin がターミナルかパイプかを検出しますか? 質問する

pythonターミナルから引数なしで" " を実行すると、 Python 対話型シェルが起動します。

ターミナルから「 」を実行しても、cat | python対話モードは起動しません。何らかの理由で、入力を取得しなくても、パイプに接続されていることが検出されました。

C や C++ や Qt で同様の検出を行うにはどうすればよいでしょうか?

ベストアンサー1

使用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)

おすすめ記事