Go - 複数の入力フィールドを持つ外部コマンドの Stdin への書き込み
Go プログラムから外部コマンドを実行する場合、次のことが必要になる場合があります。コマンドの標準入力 (stdin) に入力を提供します。ただし、外部コマンドに複数の入力フィールドが必要な場合、最も効率的で信頼性の高い方法で入力フィールドを指定する方法を決定するのは困難な場合があります。
ここで提供されている例では、ログイン コマンドが実行され、ユーザーがログインすることを期待しています。ユーザー名とパスワードの 2 つのフィールドを手動で入力します。これらの入力をプログラムで提供するには、バイト バッファーを使用できます。
Go の bytes.Buffer 型は、メモリ内のバイト シーケンスを保持および操作するために使用できます。ユーザー名とパスワードをバッファーに書き込み、login.Stdin フィールドをバッファーに設定すると、ユーザーの介入なしでコマンドに入力を提供できます。
このアプローチを示すコード スニペット:
<code class="go">import ( "bytes" "fmt" "os" "os/exec" ) func main() { cmd := "login" // Prepare the byte buffer with username and password var b bytes.Buffer username := "exampleUsername" password := "examplePassword" b.Write([]byte(fmt.Sprintf("%s\n%s\n", username, password))) // Execute the command with stdin set to the buffer login := exec.Command(cmd) login.Stdin = &b login.Stdout = os.Stdout login.Stderr = os.Stderr err := login.Run() if err != nil { fmt.Fprintln(os.Stderr, err) } }</code>
この手法を使用すると、Go プログラムは外部コマンドに必要な入力を自動的に提供し、実行プロセスを合理化し、ユーザーによる手動入力の必要性を排除します。
以上がGo で外部コマンドに複数の入力フィールドを提供するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。