C、C、および Qt の stdin 型の検出
ターミナルで引数なしで「python」を実行すると、Python 対話型シェルは次のようになります。が発売されました。ただし、ターミナルから「cat | python」を実行すると対話モードは有効にならず、stdin がパイプに接続されていることを示します。この記事では、 isatty 関数を使用して C、C、Qt の stdin 型を検出する方法について説明します。
関数の概要
stdio.h の isatty 関数は、ファイル記述子は端末に接続されます。 fileno(stdin) に適用すると、stdin が端末 (例: コンソールまたは端末エミュレーター) であるかどうか (例: ファイルまたはパイプ) がチェックされます。
C / C Example
C または C では、次のコードを使用して標準入力を検出しますtype:
#include <stdio.h> #include <io.h> int main() { if (isatty(fileno(stdin))) printf("stdin is a terminal\n"); else printf("stdin is a file or a pipe\n"); return 0; }
Qt の例
Qt は、QIODevice を継承する KStdin クラスを提供します。これには、stdin が端末に接続されているかどうかを確認するために使用できる is Terminal() メソッドがあります。
#include <QStdin> int main() { KStdin stdinDevice; if (stdinDevice.isTerminal()) qDebug() << "stdin is a terminal"; else qDebug() << "stdin is a file or a pipe"; return 0; }
C または C の isatty または Qt の KStdin を利用することで、stdin が接続されているかどうかを検出できます。端子またはパイプに接続され、入力ソースに基づいてプログラムの動作を制御するための貴重な情報を提供します。
以上がC、C、Qt で stdin がターミナルであるかパイプであるかを検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。