[go] go 언어에서의 프로세스 제어를 위한 os 패키지 활용
go 언어는 os 패키지를 통해 프로세스 관리에 유용한 기능을 제공합니다. 이 패키지를 사용하면 프로세스 생성, 제어, 감시 등의 작업을 쉽게 수행할 수 있습니다. 본 블로그에서는 os 패키지를 활용하여 go 언어에서 프로세스를 제어하는 방법에 대해 살펴보겠습니다.
Table of Contents
프로세스 생성
os 패키지를 사용하여 새로운 프로세스를 생성하는 방법은 매우 간단합니다. 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
명령어를 실행하여 새로운 프로세스를 생성하는 코드입니다.
프로세스 감시
생성된 프로세스를 감시하고 상태를 확인하는 것 또한 os 패키지를 통해 간단하게 수행할 수 있습니다. os/exec
패키지의 Command
구조체를 이용하여 실행한 명령어의 실행 결과 및 상태를 확인할 수 있습니다.
package main
import (
"fmt"
"os/exec"
)
func main() {
cmd := exec.Command("ls", "-l")
out, err := cmd.Output()
if err != nil {
fmt.Println(err)
} else {
fmt.Println(string(out))
}
}
위 예제는 ls -l
명령어를 실행하고 그 결과를 출력하는 코드입니다.
프로세스 종료
생성된 프로세스를 종료하는 것도 os/exec
패키지를 통해 간단하게 수행할 수 있습니다. Process
타입의 Kill
메서드를 이용하여 프로세스를 종료할 수 있습니다.
package main
import (
"fmt"
"os/exec"
)
func main() {
cmd := exec.Command("sleep", "10")
err := cmd.Start()
if err != nil {
fmt.Println(err)
} else {
fmt.Println("프로세스 시작")
}
err = cmd.Process.Kill()
if err != nil {
fmt.Println(err)
} else {
fmt.Println("프로세스 종료")
}
}
위 예제는 sleep 10
명령어를 실행하고 10초 후에 프로세스를 종료하는 코드입니다.
위의 예제 코드를 통해 os 패키지를 활용하여 go 언어에서의 프로세스 제어가 얼마나 간단하고 유연한지 알 수 있습니다. 이러한 기능을 효과적으로 활용하여 go 언어로 프로세스 제어를 수행할 수 있습니다.
참고문헌:
- https://golang.org/pkg/os/exec/
- https://www.ardanlabs.com/blog/2013/11/using-log-package-in-go.html