2013-10-01 2 views
0

내 부모의 부모를 얻는 방법이 있습니까? getpid()getppid()있다, 나는 "getpppid()"내 부모의 부모 (getapppid()라고도 함)

PS 찾고 있어요 : 나는 리눅스에있어, 그리고 코드는 리눅스 (안 유닉스 나 다른 변종) 여기

+2

나는 이전에 똑같은 문제를 겪어왔다. 나는 값을 생성하는 함수가 있다고 생각하지 않지만,'/ proc//status'를 트래버스해서 거기에서 ppids를 읽을 수있다. 그러나, 만약 당신이 자신을 포크, 당신은 단지 자신의 PID를 일찍 저장할 수 있습니다. –

+1

염두에두고'/ proc//stat'을 읽는 것이 훨씬 쉽습니다 - ['proc (5)'] (http://man7.org/linux/man-pages/man5/proc.5.html 참조)) 각 컬럼의 내용과'scanf' 방법에 대한 자세한 내용은. – Petesh

답변

2

에서 실행됩니다 당신 아르.

pid_t getpppid(void) 
{ 
    char exe[256],proc[81],state; 
    FILE *fp; 
    int pid,ppid=-1; 

    snprintf(proc,81,"/proc/%d/stat",(int)getppid()); 
    fp=fopen(proc,"r"); 
    if(fp) 
    { 
     fscanf(fp,"%d %s %c %d",&pid,exe,&state,&ppid); 
     fclose(fp); 
    } 
    return (pid_t)ppid; 
} 

편집 : 그냥 remeber 부모 나 프로세스가 시작된 이후() setuid를 호출하면, 프로그램이 처리하는 통계를 읽을 수있는 권한이 없을 수 있음.

+0

나는 똑같은 코드를 linuxforums에서 찾았습니다. :) – alexandernst

관련 문제