os.FindProcess를 사용하여 Go에서 프로세스 존재 확인
os.FindProcess를 사용하면 프로세스 존재에 대한 정보를 제공할 수 있지만 완전히 신뢰할 수는 없습니다. 프로세스가 종료되었거나 종료되었는지 확인합니다.
Unix 접근 방식 활용
전통적으로 Unix 명령 kill -s 0 [PID]를 사용하여 프로세스가 종료되었는지 확인합니다. 프로세스가 아직 실행 중입니다. 이 접근 방식은 실제 신호가 전송되지 않고 프로세스에 0의 신호를 보냅니다. 대신 프로세스의 존재를 확인하는 방법으로 사용됩니다.
Go에서의 구현
이 메서드를 Go로 변환하면 다음 코드는 프로세스가 있는지 확인하는 방법을 보여줍니다. 여전히 활성 상태입니다.
import ( "fmt" "log" "os" "os/exec" "strconv" "syscall" ) func main() { for _, p := range os.Args[1:] { pid, err := strconv.ParseInt(p, 10, 64) if err != nil { log.Fatal(err) } process, err := os.FindProcess(int(pid)) if err != nil { fmt.Printf("Failed to find process: %s\n", err) } else { err := process.Signal(syscall.Signal(0)) fmt.Printf("process.Signal on pid %d returned: %v\n", pid, err) } } }
출력 예
이 코드를 실행하면 서로 다른 ID를 가진 프로세스의 상태를 나타내는 다음 출력이 제공됩니다.
$ ./kill 1 $$ 123 process.Signal on pid 1 returned: operation not permitted process.Signal on pid 12606 returned: <nil> process.Signal on pid 123 returned: no such process
위 내용은 Go에서 프로세스 존재 여부를 확인하는 신뢰할 수 있는 방법이 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!