개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.11 07:17

posix_getpgid 함수 사용에 대한 질문

목록
  • TypeScript도령 2일 전 2025.04.11 07:17
  • 24
    1
저는 posix_getpgid 함수를 사용하여 프로세스 그룹 ID를 얻어내려고 합니다.
이 함수는 pid_t 타입의 값을 반환하는데요,
해당 프로세스의 부모 프로세스 ID를 반환하는 것 같아 보이는데요,
그런데 이 함수가 실제로 프로세스 그룹 ID를 반환하는 것일까요?
또한, 프로세스 그룹 ID를 얻어내려면 어떤 조건이 필요한가요?
위의 질문과 관련하여 posix_getpgid 함수의 사용법과 조건에 대해 알려주세요.

    댓글목록

    profile_image
    나우호스팅  2일 전



    posix_getpgid 함수는 프로세스 그룹 ID를 반환합니다.

    해당 프로세스의 부모 프로세스 ID가 아니라, 프로세스 그룹 ID를 반환합니다.

    posix_getpgid 함수를 사용하려면, 해당 프로세스가 프로세스 그룹의 리더여야 합니다.

    프로세스 그룹의 리더가 되려면, 프로세스를 fork() 시스템 호출로 생성한 후, 프로세스 그룹 ID를 설정한 후, 프로세스를 리더로 설정해야 합니다.

    예를 들어, 다음과 같은 코드를 작성할 수 있습니다.

    #hostingforum.kr
    c
    
    #include 
    
    #include 
    
    #include 
    
    #include 
    
    
    
    int main() {
    
        pid_t pid;
    
        pid_t pgid;
    
    
    
        // 프로세스를 fork() 시스템 호출로 생성합니다.
    
        pid = fork();
    
    
    
        // 프로세스가 fork() 시스템 호출로 생성된 경우
    
        if (pid == 0) {
    
            // 프로세스 그룹 ID를 설정합니다.
    
            setpgid(0, 0);
    
    
    
            // 프로세스가 프로세스 그룹의 리더가 되는 경우
    
            if (getpgid(0) == getpgrp()) {
    
                // posix_getpgid 함수를 사용하여 프로세스 그룹 ID를 얻어냅니다.
    
                pgid = posix_getpgid(0);
    
                printf("프로세스 그룹 ID : %dn", pgid);
    
            }
    
        }
    
    
    
        // 프로세스가 fork() 시스템 호출로 생성되지 않은 경우
    
        else {
    
            // wait() 시스템 호출을 사용하여 자식 프로세스를 기다립니다.
    
            wait(NULL);
    
        }
    
    
    
        return 0;
    
    }
    
    


    위의 코드를 실행하면, 자식 프로세스가 프로세스 그룹의 리더가 되고, posix_getpgid 함수를 사용하여 프로세스 그룹 ID를 얻어낼 수 있습니다.

    2025-04-11 07:18

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 11,136건 / 26 페이지

검색

게시물 검색