source

리눅스에서 해당 pid의 프로세스 이름

lovecheck 2023. 9. 19. 21:13
반응형

리눅스에서 해당 pid의 프로세스 이름

그의 pid에서 프로세스 이름을 얻는 방법은?예를 들어 나는 cat file1을 실행합니다.txt, 하지만 시스템에서 pid이기 때문에 cat 명령과 그것의 인수를 파악하고 싶습니다.그것을 결정할 구조나 비슷한 것이 있습니까?감 잡히는 게 없어요?

이 유닉스를 수행하는 일반적인 방법은 없습니다.
각각의 OS는 이를 처리하는 방법이 다르며 어떤 것들은 매우 어렵습니다.리눅스를 말씀하시는군요.Linux의 경우 정보는 /profile 시스템에 있습니다.
프로세스 ID 9999의 명령줄을 가져오려면 파일을 읽습니다./proc/9999/cmdline.

리눅스 상에서, 당신은 당신이 볼 수 있습니다./proc/. 타이핑 시도man proc자세한 정보는.내용은/proc/$PID/cmdline당신에게 그 과정의 명령 줄을 줄 것입니다.$PID함께 달려갔습니다.또한 있습니다./proc/self자신을 검사하기 위해 :)

(예를 들어, Mac OS X에서) 사용하는 것입니다.libproc. libproc.h 참조.

POSIX C는 프로세스 이름을 PID로 가져오기 위한 표준 API를 지원하지 않습니다.

리눅스에서는 LINU Proc API로 이름을 얻을 수 있습니다: /proc/$PID/cmd 라인.그리고 코드는 다음과 같습니다.

const char* get_process_name_by_pid(const int pid)
{
    char* name = (char*)calloc(1024,sizeof(char));
    if(name){
        sprintf(name, "/proc/%d/cmdline",pid);
        FILE* f = fopen(name,"r");
        if(f){
            size_t size;
            size = fread(name, sizeof(char), 1024, f);
            if(size>0){
                if('\n'==name[size-1])
                    name[size-1]='\0';
            }
            fclose(f);
        }
    }
    return name;
}

프로세스 ID 9000의 프로세스 이름을 가져오려면 다음 명령을 사용합니다.

ps -p 9000 -o comm=

이 질문에 대한 답변이 있는 동안, 저는 제 2센트를 추가하고 싶습니다.

나의 경우, 언제 처리할 것인가요?1111프로세스를 만듭니다.22222경유로pipe(적어도 이것은 내가 들은 것입니다.)/proc/2222/cmdline올바른 프로세스 이름을 지정하지 않고 대신 다음과 같은 것을 지정합니다.1111_1. 사용해야 합니다./proc/2222/comm정확한 프로세스 이름을 얻을 수 있습니다.

Linux에서 아래 명령을 사용합니다.

ls -l /proc/[pid]/exe

프로세스/응용프로그램 이름이 표시됩니다.

ps --pid <pid> -o comm h: 이 명령은 실행 파일 이름을 제공합니다.예를 들어 스크립트 name.sh 를 실행하면 위 명령어는 다음과 같이 출력합니다.bash

ps --ppid <pid> -o comm h: 이 명령은 다음과 같은 출력을 제공합니다.name

언급URL : https://stackoverflow.com/questions/15545341/process-name-from-its-pid-in-linux

반응형