[go] 명령 실행 표준 출력 처리

Golang 프로그램에서 외부 명령을 실행하고 해당 명령의 표준 출력을 처리해야 할 때가 있습니다. 이를 위해 다음과 같은 방법을 사용할 수 있습니다.

명령 실행

os/exec 패키지를 사용하여 외부 명령을 실행할 수 있습니다.

package main

import (
	"fmt"
	"os/exec"
)

func main() {
	cmd := exec.Command("ls", "-l")
	err := cmd.Run()
	if err != nil {
		fmt.Println(err)
	}
}

위의 예제에서는 ls -l 명령을 실행하고 있습니다.

표준 출력 처리

외부 명령의 표준 출력을 처리하려면 Cmd 구조체의 Stdout 필드를 사용해야 합니다.

package main

import (
	"fmt"
	"os/exec"
)

func main() {
	cmd := exec.Command("ls", "-l")
	stdout, err := cmd.StdoutPipe()
	if err != nil {
		fmt.Println(err)
		return
	}

	err = cmd.Start()
	if err != nil {
		fmt.Println(err)
		return
	}

	output := make([]byte, 30)
	n, err := stdout.Read(output)
	if err != nil {
		fmt.Println(err)
		return
	}

	fmt.Printf("표준 출력: %s\n", output[:n])
}

위의 예제에서는 ls -l 명령의 표준 출력을 읽어오고 있습니다.

이렇게 함으로써 Golang에서 외부 명령을 실행하고 표준 출력을 처리할 수 있습니다.

References