1. ホーム
  2. c++

[解決済み] stdinがターミナルかパイプかを検出する?

2022-06-04 15:55:28

質問

を実行すると、quot; python を引数なしでターミナルから実行すると、Pythonの対話型シェルが表示されます。

を実行すると、" cat | python をターミナルから実行しても、対話モードは起動しません。なぜか、入力がないのに、パイプに接続されていることが検出されています。

C や C++、Qt で同様の検出を行うにはどうしたらよいでしょうか。

どのように解決するのですか?

使用方法 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");

(ウィンドウズではアンダースコアが先頭につきます。 _isatty , _fileno )