[go] go 언어에서 exec 패키지를 이용하여 프로세스 관리하기

Go 언어에서 exec 패키지를 사용하면 외부 프로세스를 실행하고 제어할 수 있습니다. 이 기능을 사용하면 다른 프로그램을 실행하고 표준 입력, 출력, 오류 스트림을 제어할 수 있습니다. 이를 통해 Go 언어로 작성된 프로그램에서 다른 프로그램을 호출하고 해당 프로그램의 출력을 가져와서 처리할 수 있습니다.

exec 패키지 소개

os/exec 패키지는 외부 명령을 실행하는 기능을 제공합니다. 이 패키지를 사용하여 새로운 프로세스를 시작하고 그 프로세스의 입출력을 조작할 수 있습니다.

외부 프로세스 실행하기

os/exec 패키지를 사용하여 외부 프로세스를 실행하려면 다음과 같이 Command 구조체를 생성하고 Start 메서드를 호출합니다.

package main

import (
    "fmt"
    "os/exec"
)

func main() {
    cmd := exec.Command("ls", "-l")
    err := cmd.Start()
    if err != nil {
        fmt.Println("프로세스 시작 오류:", err)
        return
    }
}

위의 예제에서 exec.Command 함수를 사용하여 ls -l 명령을 실행하는 새로운 프로세스를 생성합니다. 그런 다음 Start 메서드를 호출하여 이 프로세스를 시작합니다.

외부 프로세스 결과 가져오기

외부 프로세스를 실행하고 나면 해당 프로세스의 결과를 가져와서 처리해야 할 수 있습니다. 이때 Command 구조체의 Output 메서드를 사용합니다.

package main

import (
    "fmt"
    "os/exec"
)

func main() {
    cmd := exec.Command("ls", "-l")
    out, err := cmd.Output()
    if err != nil {
        fmt.Println("프로세스 결과 오류:", err)
        return
    }
    fmt.Println(string(out))
}

위의 예제에서 exec.Command 함수를 사용하여 ls -l 명령을 실행하고, Output 메서드를 사용하여 해당 프로세스의 결과를 가져와서 출력합니다.

정리

Go의 os/exec 패키지를 사용하면 외부 프로세스를 실행하고 해당 프로세스의 입출력을 제어할 수 있습니다. 이를 통해 Go 언어에서 다양한 명령어나 외부 프로그램을 실행하고 그 결과를 활용할 수 있습니다.

위의 예제는 간단한 명령어인 ls -l를 사용했지만, 복잡한 명령어나 외부 프로그램도 비슷한 방식으로 실행하고 결과를 처리할 수 있습니다.

더 많은 정보는 Go 공식 문서를 참조하세요.