C/C /Qt で Stdin が端末であるかパイプであるかを知る
特定のシナリオでは、接続されている stdin を区別することが重要です。端子とかパイプとか。たとえば、ターミナルから Python を起動する場合、その対話モードは、stdin がターミナルであるかパイプであるかによって影響を受けます。
C/C での検出
を決定するにはstdin の性質を考慮して、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.
Qt での検出
Qt は QFileDevice::isSequential メソッドを提供します。
#include <QFileDevice> if (stdin->isSequential()) { // stdin is a pipe } else { // stdin is a terminal }
このアプローチは次の事実を利用します。シーケンシャル デバイスは通常、パイプまたはその他のシーク不可能なソースです。
以上が標準入力 (stdin) が C/C /Qt の端子かパイプかを判断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。