Go でのパイプ処理を理解する
パイプ処理は、1 つのコマンドの出力を入力として使用できる Unix 系システムの強力な手法です。もう一つのために。 Go では、効率的なリソース管理のために、コマンドがパイプされているかどうかを判断することが重要です。
パイプされたコマンドの検出
コマンドがパイプされているかどうかを検出するには、次のことができます。 os.Stdin.Stat() を利用します。このメソッドは、標準入力デバイスに関する情報を返します。具体的には、デバイスのファイル モードを示す Mode フィールドに興味があります。
サンプル コード
次の Go コードは、コマンドがコマンドかどうかを検出する方法を示しています。パイプされます:
<code class="go">package main import ( "fmt" "os" ) func main() { fi, _ := os.Stdin.Stat() if (fi.Mode() & os.ModeCharDevice) == 0 { fmt.Println("data is from pipe") } else { fmt.Println("data is from terminal") } }</code>
データがコマンドにパイプされるとき、ファイル モードはキャラクタ デバイスを示しません (つまり、(fi.Mode() & os.ModeCharDevice) == 0)。対応するメッセージが出力されます。それ以外の場合、コマンドはパイプされず、入力は端末デバイスから来ます。
使用シナリオ
この手法は、次のようなさまざまなシナリオで役立ちます。
パイプの仕組みを理解し、os.Stdin.Stat() を使用することで、パイプされた入力を処理する Go プログラムの堅牢性と効率を強化できます。
以上がGo コマンドがパイプから入力を受信しているかどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。