2016-06-09 2 views
2

getpid를 사용하고 현재 프로세스의 PID를 가져옵니다. 이제 프로세스 이름을 사용하여 다른 프로세스의 PID를 얻으려고합니다. 다른 프로세스 pid를 얻는 방법?c에서 다른 프로세스의 PID를 가져 오는 방법은 무엇입니까?

#include <stdio.h> 
#include <sys/types.h> 
#include <unistd.h> 

int main(void) 
{ 
    printf("My pid:%d\n", getpid()); 

    return 0; 
} 
+0

확인이 : http://stackoverflow.com/questions/8166415/how-to-get-the- pid-of-a-process-in-linux-in-c –

+0

아래의 답변과는 별도로 다른 방법은 자신의 커널 모듈을 작성하여 상호 작용할 수 있습니다. <- (많은 일을하지만 당신에게 이드를 주라.) ps 명령을 구문 분석하고 pid를 얻는 쉘 스크립트를 실행할 수도 있습니다. 당신은 더 많은 길을 이해할 수 있습니다 ..... 나는 추측한다 !! –

답변

3

1 : 데몬이 사용하는 가장 일반적인 방법입니다. pid 번호를 파일/파일에 저장하십시오. 그러면 다른 프로세스에서 쉽게 찾을 수 있습니다.

2 : 휴대용 방식으로 파이프로 ps을 실행하는 하위 프로세스를 생성하십시오. 그런 다음 텍스트 출력을 구문 분석하고 대상 프로세스를 찾을 수 있습니다.

3 : 비 휴대 방법은 PID가 정확한지 확인하기 위하여,은/proc/파일 시스템 종종, 1 2, 3과 결합

파싱.

2

모든 프로그램의 PID를 얻으려면 명령 프로그램 pidof와 함께 popen()을 사용할 수 있습니다. 이처럼

:

char line[total_length]; 
FILE * command = popen("pidof ...","r"); 

fgets(line,total_length,command); 

pid_t pid = stroul(line,NULL,10); 
pclose(command); 

편집 :

참조하십시오 How to get the PID of a process in Linux in C

관련 문제