Go でパイプされた入力を決定する
コマンドがパイプされたかどうかを理解することは、Go アプリケーション、特にさまざまなソースからのデータを処理する場合に重要です。この記事では、コマンドがパイプされているかどうかを判断し、開発者がそれに応じてコードを適応できるようにする方法について説明します。
ソリューション
Go は、os.Stdin.Stat( ) 関数を使用して、標準入力に関連付けられたファイル情報を取得します。この情報には、入力が端末からのものかパイプからのものかを示すファイル モードが含まれます。次のコード スニペットは、この目的で os.Stdin.Stat() を使用する方法を示しています。
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")
}
}
コマンドがパイプされると、 fi.Mode() & os.ModeCharDevice は 0 と評価され、入力がキャラクタ デバイス (端末など) からのものではないことを示します。逆に、ゼロ以外の値は、入力がキャラクタ デバイスからのものであることを示します。
このアプローチは、パイプ入力と非パイプ入力を区別する信頼性の高い方法を提供し、開発者がそれに応じてアプリケーションの動作を調整できるようにします。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3