[go] go 언어의 exec 패키지를 활용하여 운영체제 명령어 실행하기

Go 언어에서는 os/exec 패키지를 사용하여 운영체제 명령어를 실행하고 결과를 가져올 수 있습니다. 이 기능을 사용하면 Go 언어로 운영체제 명령어를 실행하고 그 결과를 프로그램에서 활용할 수 있습니다.

exec.Command 함수로 명령어 실행하기

exec.Command 함수를 사용하여 운영체제 명령어를 실행할 수 있습니다. 이 함수는 명령어의 이름과 옵션을 받아서 *exec.Cmd 구조체를 반환합니다. 명령어를 실행한 후 결과를 가져오거나 에러를 확인할 수 있습니다.

다음은 간단한 예제 코드입니다.

package main

import (
	"fmt"
	"os/exec"
)

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

이 예제는 ls -l 명령어를 실행하고 결과를 표준 출력으로 가져옵니다.

명령어 실행 시 파이프 사용하기

exec 패키지를 사용하여 명령어를 실행할 때 파이프(pipe)를 사용하여 명령어 간의 통신도 가능합니다. 이를 통해 명령어 간의 데이터 전달 및 처리가 가능합니다.

package main

import (
	"fmt"
	"os/exec"
)

func main() {
	cmd1 := exec.Command("echo", "Hello")
	cmd2 := exec.Command("grep", "Hello")

	// cmd1의 표준 출력을 cmd2의 표준 입력으로 연결
	cmd2.Stdin, _ = cmd1.StdoutPipe()

	// cmd2의 표준 출력을 가져와서 출력
	output, _ := cmd2.CombinedOutput()
	fmt.Println(string(output))
}

마무리

Go 언어의 os/exec 패키지를 사용하면 간단하게 운영체제 명령어를 실행하고 결과를 가져올 수 있습니다. 이를 통해 Go 언어로 외부 프로그램과의 연동이 간편해지며, 유용한 기능을 구현할 수 있습니다.

참고 자료