Golang은 다양한 운영 체제에 대한 하위 수준 API 호출을 지원하는 강력한 프로그래밍 언어입니다. Golang 프로그래머는 운영 체제에서 실행되는 프로세스를 관리하고 모니터링해야 하는 경우가 많습니다. 이 기사에서는 Golang을 사용하여 프로세스 이름을 쿼리하는 방법을 살펴보겠습니다.
1. 프로세스 이름의 정의
프로세스는 운영체제에서 실행되는 프로그램을 말합니다. 각 프로세스에는 고유한 프로세스 ID(PID)와 프로세스 이름이 있습니다. 프로세스 이름은 시스템에 있는 프로세스의 식별자이며 일반적으로 응용 프로그램의 이름입니다. 예를 들어 Windows 시스템의 "chrome.exe"는 Google Chrome 브라우저의 실행 중인 인스턴스를 나타냅니다.
Linux 시스템에서 프로세스 이름은 애플리케이션 이름일 뿐만 아니라 프로세스의 상태 및 기타 정보도 포함합니다. 예를 들어, "sshd: user@pts/0"은 "user"라는 사용자의 작업 터미널(pts/0)과 통신하는 실행 중인 SSH 서버 프로세스를 나타냅니다.
2. 프로세스 이름 쿼리
실행 중인 프로세스의 이름을 쿼리하려면 Golang의 os 및 syscall 소프트웨어 패키지를 사용해야 합니다. syscall 소프트웨어 패키지는 운영 체제의 기본 기능에 액세스할 수 있는 시스템 호출 인터페이스를 제공합니다.
1. 프로세스 ID 가져오기
Golang의 os 패키지를 사용하여 현재 프로세스의 PID를 가져올 수 있습니다. 다음은 샘플 코드입니다.
package main import ( "fmt" "os" ) func main() { pid := os.Getpid() fmt.Printf("Current process ID: %d ", pid) }
2. syscall을 사용하여 프로세스 이름을 가져옵니다
syscall 패키지의 Getpgid 함수를 사용하여 지정된 프로세스의 PGID(Process Group ID)를 가져올 수 있습니다. 그런 다음 /proc 파일 시스템의 stat 파일을 사용하여 프로세스의 이름과 상태를 구문 분석할 수 있습니다.
샘플 코드는 다음과 같습니다.
package main import ( "fmt" "os" "syscall" ) func getProcessName(pid int) (string, error) { pgid, err := syscall.Getpgid(pid) if err != nil { return "", err } statFile := fmt.Sprintf("/proc/%d/stat", pgid) f, err := os.Open(statFile) if err != nil { return "", err } defer f.Close() var comm string fmt.Fscanf(f, "%d (%s)", &pgid, &comm) return comm, nil } func main() { pid := os.Getpid() name, err := getProcessName(pid) if err != nil { fmt.Println(err) return } fmt.Printf("PID %d, Process name: %s ", pid, name) }
위 코드에서는 fmt.Fscanf 함수를 사용하여 stat 파일에서 프로세스 이름을 읽습니다. 이 함수는 fmt.Scanf 함수와 유사하지만 데이터를 읽을 형식 문자열을 지정할 수 있습니다.
프로세스 이름을 읽을 때 통계 파일 형식에서는 이름 주위에 괄호가 있기 때문에 이름을 괄호로 묶어야 합니다.
3. 요약
이 기사에서는 Golang을 사용하여 프로세스 이름을 쿼리하는 방법을 배웠습니다. os 및 syscall 패키지를 사용하여 현재 프로세스의 PID와 지정된 프로세스의 PGID를 가져온 다음 /proc 파일 시스템의 stat 파일을 사용하여 이름과 상태를 구문 분석합니다.
Golang의 강력한 기능을 사용하면 운영 체제에서 실행되는 프로세스를 보다 쉽게 관리하고 모니터링할 수 있습니다. Golang의 프로세스 관리 기술을 더 배우고 싶다면 관련 문서와 튜토리얼을 확인하고 Golang 공식 문서와 코드 예제를 참조하세요.
위 내용은 golang 쿼리 프로세스 이름의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!