Go では、外部コマンドの実行とその入出力の管理は一般的なタスクです。ただし、「ログイン」などのユーザー入力を求めるコマンドを扱う場合、これらの入力をプログラムで自動化するのは困難な場合があります。
この問題に対する 1 つのアプローチは、コマンドの標準入力 (stdin) に直接書き込むことです。 ) バイトバッファを使用します。提供されているソリューションを詳しく見てみましょう。
<code class="go">login := exec.Command(cmd, "login") var b bytes.Buffer b.Write([]byte(username + "\n" + pwd + "\n")) login.Stdout = os.Stdout login.Stdin = &b login.Stderr = os.Stderr</code>
このコードでは、b という名前の bytes.Buffer を作成し、ユーザー名とパスワードを改行で連結します。次に、b をログイン コマンドの Stdin フィールドに割り当て、バッファをコマンドの入力ストリームに効果的に接続します。
コマンドが実行されると、改行が見つかるまで b から文字が読み取られ、これがユーザー名として解釈されます。その後、次の改行まで読み取られ、これがパスワードとして扱われます。この方法でバッファに手動で書き込むことで、ユーザーの対話の必要性を回避し、必要な入力をプログラムで提供します。
標準入力は文字バッファであり、コマンドは通常、改行に遭遇するまで入力を読み取ることを覚えておいてください。この手法を使用すると、外部コマンドに入力する前に入力をバッファリングしてシーケンスすることができ、ユーザーの手動介入を必要とせずに入力プロセスを自動化できます。
以上がGo で外部コマンド入力を自動化する方法: 「login」などのコマンドに対するユーザー操作をバイパスするためのガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。