> 백엔드 개발 > Golang > Go에서 신호의 원래 프로세스 ID를 어떻게 확인할 수 있나요?

Go에서 신호의 원래 프로세스 ID를 어떻게 확인할 수 있나요?

Patricia Arquette
풀어 주다: 2024-12-06 22:25:16
원래의
188명이 탐색했습니다.

How Can I Determine the Originating Process ID of a Signal in Go?

Determining Signal Origin in Go: Exploring Alternatives

Go에서는 신호 캡처가 가능하지만 신호를 트리거한 프로세스의 PID를 가져옵니다. 신호는 기본적으로 지원되지 않습니다. C는 원래 PID를 나타내는 구조를 전달하는 신호 처리기를 제공하지만 Go에는 이 기능이 없습니다.

C에서 사용자 정의 신호 처리기를 설정하려는 시도는 복잡하고 오류가 발생하기 쉽습니다. 프로세스 간 통신을 위한 대체 통신 방법을 고려하십시오.

대체 접근 방식:

원래 PID를 결정하는 것이 중요한 경우 다음 접근 방식을 고려하십시오.

  • 공유 메모리: 프로세스가 통신하고 교환할 수 있는 공유 메모리 세그먼트를 만듭니다. 정보.
  • 메시지 대기열: 메시지 대기열을 사용하여 프로세스 간에 메시지를 주고받으며 안정적인 통신을 보장합니다.
  • 소켓 통신: 소켓 연결 설정 효율적인 양방향 통신을 위해 프로세스 간

예(사용 소켓):

다음은 TCP 소켓을 사용하여 프로세스 간에 프로세스 ID를 통신하는 예입니다.

import (
    "net"
    "os"
    "strconv"
)

func main() {
    // Create a TCP listener
    ln, err := net.Listen("tcp", ":8080")
    if err != nil {
        os.Exit(1)
    }

    // Acceptor routine
    go func() {
        for {
            conn, err := ln.Accept()
            if err != nil {
                continue
            }

            // Receive PID from the client
            buf := make([]byte, 1024)
            n, err := conn.Read(buf)
            if err != nil || n == 0 {
                continue
            }

            pid, err := strconv.Atoi(string(buf[:n]))
            if err != nil {
                continue
            }

            // ... Do something with the received PID
        }
    }()

    // Query and send PID to the server
    conn, err := net.Dial("tcp", "localhost:8080")
    if err != nil {
        os.Exit(1)
    }

    // Send PID to the server
    pid := os.Getpid()
    conn.Write([]byte(strconv.Itoa(pid)))
}
로그인 후 복사

이 접근 방식을 사용하면 프로세스가 PID 정보를 효과적이고 원활하게 교환할 수 있습니다.

위 내용은 Go에서 신호의 원래 프로세스 ID를 어떻게 확인할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿