[go] go 언어의 exec 패키지를 사용하여 리다이렉션 구현하는 방법
Go 언어에서는 exec 패키지를 사용하여 외부 명령을 실행하고 해당 명령의 표준 입력, 표준 출력, 표준 에러를 리다이렉션할 수 있습니다. 이를 통해 Go 언어로 다른 프로세스와의 상호 작용을 간편하게 구현할 수 있습니다.
exec 패키지 소개
os/exec
패키지는 외부 명령을 실행하는 데 사용됩니다. 이 패키지를 사용하면 외부 명령을 실행하고, 명령을 실행한 후의 결과를 가져오거나 표준 입력, 표준 출력, 표준 에러를 다른 소스로 리다이렉션할 수 있습니다.
표준 출력 리다이렉션
다음은 exec 패키지를 사용하여 표준 출력을 리다이렉션하는 예제 코드입니다.
package main
import (
"fmt"
"os"
"os/exec"
)
func main() {
cmd := exec.Command("ls", "-l")
stdout, err := cmd.StdoutPipe()
if err != nil {
fmt.Println(err)
return
}
if err := cmd.Start(); err != nil {
fmt.Println(err)
return
}
content, err := io.ReadAll(stdout)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(content))
}
위 코드는 ls -l
명령을 실행하고 표준 출력을 읽어와서 화면에 출력하는 예제입니다.
표준 입력 리다이렉션
아래는 exec 패키지를 사용하여 표준 입력을 리다이렉션하는 예제 코드입니다.
package main
import (
"fmt"
"os/exec"
)
func main() {
cmd := exec.Command("wc", "-l")
cmd.Stdin = strings.NewReader("hello\nworld\n")
output, err := cmd.CombinedOutput()
if err != nil {
fmt.Println(err)
}
fmt.Println(string(output))
}
위 코드는 wc -l
명령을 실행하고 “hello\nworld\n”을 표준 입력으로 제공하여 실행 결과를 가져오는 예제입니다.
정리
Go 언어의 exec 패키지를 사용하면 외부 명령의 실행과 그 결과를 표준 입력, 표준 출력, 표준 에러를 리다이렉션하여 처리할 수 있습니다. 이를 통해 Go 언어에서 다른 프로세스와의 상호 작용을 편리하게 처리할 수 있습니다.