>백엔드 개발 >Golang >Go에서 외부 명령에 여러 입력 필드를 제공하는 방법은 무엇입니까?

Go에서 외부 명령에 여러 입력 필드를 제공하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-30 04:16:02920검색

How to Provide Multiple Input Fields to External Commands in Go?

Go - 여러 입력 필드가 있는 외부 명령용 Stdin에 쓰기

Go 프로그램에서 외부 명령을 실행할 때 다음이 필요할 수 있습니다. 명령의 표준 입력(stdin)에 입력을 제공합니다. 그러나 외부 명령에 여러 입력 필드가 필요한 경우 가장 효율적이고 안정적인 방식으로 입력 필드를 제공하는 방법을 결정하는 것이 어려울 수 있습니다.

제공된 예에서는 로그인 명령이 실행되어 사용자를 기대합니다. 사용자 이름과 비밀번호라는 두 필드를 수동으로 입력합니다. 프로그래밍 방식으로 이러한 입력을 제공하기 위해 바이트 버퍼를 사용할 수 있습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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