0
내 부모의 부모를 얻는 방법이 있습니까? getpid()
및 getppid()
있다, 나는 "getpppid()
"내 부모의 부모 (getapppid()라고도 함)
PS 찾고 있어요 : 나는 리눅스에있어, 그리고 코드는 리눅스 (안 유닉스 나 다른 변종) 여기
내 부모의 부모를 얻는 방법이 있습니까? getpid()
및 getppid()
있다, 나는 "getpppid()
"내 부모의 부모 (getapppid()라고도 함)
PS 찾고 있어요 : 나는 리눅스에있어, 그리고 코드는 리눅스 (안 유닉스 나 다른 변종) 여기
에서 실행됩니다 당신 아르.
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를 호출하면, 프로그램이 처리하는 통계를 읽을 수있는 권한이 없을 수 있음.
나는 똑같은 코드를 linuxforums에서 찾았습니다. :) – alexandernst
나는 이전에 똑같은 문제를 겪어왔다. 나는 값을 생성하는 함수가 있다고 생각하지 않지만,'/ proc//status'를 트래버스해서 거기에서 ppids를 읽을 수있다. 그러나, 만약 당신이 자신을 포크, 당신은 단지 자신의 PID를 일찍 저장할 수 있습니다. –
염두에두고'/ proc//stat'을 읽는 것이 훨씬 쉽습니다 - ['proc (5)'] (http://man7.org/linux/man-pages/man5/proc.5.html 참조)) 각 컬럼의 내용과'scanf' 방법에 대한 자세한 내용은. –
Petesh