>  기사  >  백엔드 개발  >  Go에서 외부 명령에 프로그래밍 방식으로 여러 입력 필드를 제공하는 방법은 무엇입니까?

Go에서 외부 명령에 프로그래밍 방식으로 여러 입력 필드를 제공하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-28 13:43:02580검색

How to Programmatically Provide Multiple Input Fields to an External Command in Go?

Go에서 외부 명령의 STDIN에 쓰기

Go에서는 외부 명령을 실행할 때 STDIN을 통해 입력을 제공해야 하는 경우가 많습니다. 이 기사에서는 여러 입력 필드가 필요한 명령을 처리할 때 STDIN에 입력을 쓰는 기술을 살펴봅니다.

"login" 명령과 같이 사용자 이름과 비밀번호를 순차적으로 묻는 명령을 고려해 보겠습니다. 이러한 입력을 프로그래밍 방식으로 제공하려면 명령의 STDIN에 작성해야 합니다.

초기 접근 방식은 다음 코드에 표시된 대로 입력 필드를 수동으로 처리하는 것이었습니다.

<code class="go">login := exec.Command(cmd, "login")

login.Stdout = os.Stdout
login.Stdin = os.Stdin
login.Stderr = os.Stderr

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

그러나 , 이 방법은 프로그래밍 방식의 입력을 허용하지 않습니다. 해결책은 bytes.Buffer를 활용하여 입력을 조합하는 것입니다. 개선된 코드는 다음과 같습니다.

<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>

bytes.Buffer는 문자 버퍼 역할을 합니다. 개행 문자로 구분된 사용자 이름과 비밀번호를 작성함으로써 기본적으로 외부 명령이 차례로 읽을 입력 시퀀스를 구성합니다. 명령의 Stdin 필드에 버퍼가 할당되어 입력이 명령 프로세스에 공급되도록 합니다.

이 접근 방식을 사용하면 여러 입력 필드를 사용하여 외부 명령에 대한 자동 입력이 가능해 Go와 다른 명령 간의 상호 작용이 단순화됩니다. 라인 도구.

위 내용은 Go에서 외부 명령에 프로그래밍 방식으로 여러 입력 필드를 제공하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.