getppid() 함수가 리턴값으로 init 프로세스의 pid를 반환합니다.

thenextstep의 이미지

OS: OS X

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
main()
{
        pid_t pid;
 
        if((pid=fork())==-1)
                perror("fork failed");
        else if(pid!=0)
                printf("PID is %d, child process pid is %d\n",(int)getpid(),(int)pid);
 
        else
                printf("PID is %d, parent process pid is %d\n",(int)getpid(),(int)getppid());
}

위 코드를 실행시켰을 시
PID is 19936, child process pid is 19937
PID is 19937, parent process pid is 1
부모 프로세스의 pid값을 1로 리턴하네요.
부모 프로세스가 종료됐을때 getppid가 1을 리턴한다는데
제대로된 부모 프로세스의 id를 출력하려면 어떻게 해야하나요?
shint의 이미지

자식에서 부모값을 보시고 싶다면 write함수를 사용해야할거 같습니다.
write(STDOUT_FILENO, buf, sizeof(buf)-1);
http://blog.naver.com/pjh791010/60010481121

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

익명 사용자의 이미지

부모 프로세스가 종료되기 직전에 wait() 함수를 추가하시면 원하는 대로 동작할 것입니다
wait( ) 함수가 무엇이고 어떻게 동작하는 지는 검색을 통해 확인하세요

아래 코드를 추가하세요

pid_t pid;
int stat;
 
pid = wait(&stat);