[go] go 언어에서의 프로세스 제어를 위한 os 패키지 활용

go 언어는 os 패키지를 통해 프로세스 관리에 유용한 기능을 제공합니다. 이 패키지를 사용하면 프로세스 생성, 제어, 감시 등의 작업을 쉽게 수행할 수 있습니다. 본 블로그에서는 os 패키지를 활용하여 go 언어에서 프로세스를 제어하는 방법에 대해 살펴보겠습니다.

Table of Contents

  1. 프로세스 생성
  2. 프로세스 감시
  3. 프로세스 종료

프로세스 생성

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 언어로 프로세스 제어를 수행할 수 있습니다.

참고문헌: