ホームページ  >  記事  >  バックエンド開発  >  Go の Stdin 経由で外部プログラムにユーザー資格情報を入力するにはどうすればよいですか?

Go の Stdin 経由で外部プログラムにユーザー資格情報を入力するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-02 01:28:30815ブラウズ

How to Input User Credentials into an External Program via Stdin in Go?

標準入力経由で外部プログラムにユーザー資格情報を入力する

外部コマンドを実行し、プログラム内からユーザー資格情報を提供するシナリオを考えてみましょう。囲碁プログラム。このコマンドは、別のフィールドにユーザー名とパスワードの入力を求めるプロンプトを表示します。 stdin を使用してこれらのフィールドに順番に入力する方法を決定するのは難しい場合があります。

解決策: bytes.Buffer の利用

これに対処するには、bytes.Buffer タイプを利用します。これにより、バイト データの書き込みと読み取りのためのバッファの作成が可能になります。次の手順に従ってください:

  1. bytes.Buffer を作成し、ユーザー名とパスワードを改行文字で区切って書き込みます。
  2. バッファをコマンドの Stdin フィールドに割り当てます。
  3. 通常どおりコマンドを実行し、その stdout と stderr をプログラムにリダイレクトします。

サンプル コード:

<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

err := login.Run()
if err != nil {
    fmt.Fprintln(os.Stderr, err)
}</code>

このアプローチは、stdin が文字列に遭遇するまで文字を読み取るという事実を利用します。改行。バッファを標準入力に送ることにより、コマンドはあいまいさを生じることなく資格情報を順番に読み取ります。

以上がGo の Stdin 経由で外部プログラムにユーザー資格情報を入力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。