ホームページ > バックエンド開発 > C++ > 標準入力 (stdin) が C または C の端子であるかパイプであるかを確認するにはどうすればよいですか?

標準入力 (stdin) が C または C の端子であるかパイプであるかを確認するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-05 04:26:10
オリジナル
881 人が閲覧しました

How Can I Determine if Standard Input (stdin) is a Terminal or a Pipe in C or C  ?

C または C での端子またはパイプの接続の決定

プログラムを実行するとき、多くの場合、標準入力 (stdin) が入力されているかどうかを確認する必要があります。 ) は端子またはパイプに接続されます。この区別は、プログラムが受け取っている入力の種類を理解し、それに応じて動作を調整するために重要です。

問題分析

観察されたように、「Python」は次のような場合に応じて動作が異なります。ターミナルまたはパイプ経由で呼び出されます。これは、プログラムが端末接続の有無を検出することを示します。

C または C 検出ソリューション

C または C では、関数 isatty を使用して次のことができます。指定されたファイル記述子が端末を参照しているかどうかを判断します。ファイル記述子を引数として受け取ります。通常、stdin の場合は fileno(stdin) です。

コード例

C で isatty を使用する方法の例を次に示します。または C :

#include <stdio.h>
#include <io.h> // For _isatty and _fileno on Windows

int main() {
  if (isatty(fileno(stdin))) {
    printf("stdin is a terminal\n");
  } else {
    printf("stdin is a file or a pipe\n");
  }

  return 0;
}
ログイン後にコピー

Windows では、関数 isatty と fileno の接頭辞が次のようになります。アンダースコアがあるため、コードは次のようになります:

#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;
}
ログイン後にコピー

以上が標準入力 (stdin) が C または C の端子であるかパイプであるかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート