프로세스 이름 얻는 방법

리눅스 환경에서 프로세스 이름을 얻는 방법은 여러 가지가 있다. C 프로그래밍 언어에서 프로세스 이름을 얻는 방법과 터미널 명령어를 사용하여 프로세스 이름을 확인하는 방법에 대해 알아본다.

C에서 프로세스 이름 얻기

C 언어에서 프로세스 이름을 얻는 가장 일반적인 방법은 getpid()/proc 파일 시스템을 사용하는 것이다. 두 가지 방법을 사용해 볼 수 있는데, /proc/<PID>/comm 파일을 직접 읽는 방법과, prctl()를 통회 얻는 방법이다.

getpid()/proc 파일 시스템 사용

리눅스 시스템에서는 /proc 디렉토리 내에 각 프로세스의 정보가 저장되어 있다. getpid() 함수를 사용하여 현재 프로세스의 PID(Process ID)를 얻은 다음, /proc/<PID>/comm 파일을 읽어서 프로세스 이름을 얻을 수 있다.

예제 코드

#include <stdio.h>
#include <unistd.h>

int main() {
    char process_name[256];
    pid_t pid = getpid();  // 현재 프로세스의 PID 얻기

    // /proc/<PID>/comm 파일에서 프로세스 이름 읽기
    snprintf(process_name, sizeof(process_name), "/proc/%d/comm", pid);
    FILE *file = fopen(process_name, "r");

    if (file) {
        fgets(process_name, sizeof(process_name), file);
        fclose(file);

        // 개행 문자 제거
        process_name[strcspn(process_name, "\n")] = 0;

        printf("Process name: %s\n", process_name);
    } else {
        perror("fopen");
    }

    return 0;
}

컴파일 및 실행

gcc -o get_process_name get_process_name.c
./get_process_name
Process name: get_process_nam

prctl() 사용

리눅스 커널에서는 간단히 prctl() 시스템 호출을 통해 프로세스 이름을 얻거나 설정할 수 있다.

예제 코드

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

int main() {
    char process_name[256];

    // prctl()을 사용하여 프로세스 이름 얻기
    prctl(PR_GET_NAME, (unsigned long)process_name, 0, 0, 0);

    printf("Process name: %s\n", process_name);

    return 0;
}

컴파일 및 실행

gcc -o get_process_name_prctl get_process_name_prctl.c
./get_process_name_prctl
Process name: get_process_nam

쉘에서 프로세스 이름 확인하기

터미널에서 프로세스 이름을 확인할 수 있는 다양한 명령어들이 있다. 가장 많이 사용되는 명령어는 ps, pgreptop 이다.

ps 명령어

ps 명령어는 현재 실행 중인 프로세스의 정보를 보여준다. 이를 통해 프로세스 이름을 확인할 수 있습니다.

사용 예제

ps -p <PID> -o comm=

<PID>를 원하는 프로세스 ID로 대체하면 해당 프로세스의 이름을 출력한다.

$ ps -p 1909176 -o comm=
cupsd

pgrep 명령어

pgrep 명령어는 주어진 이름과 일치하는 프로세스의 PID를 찾는 데 사용된다. 역으로, PID를 알고 있는 경우에는 프로세스 이름을 확인할 수 있다.

사용 예제

pgrep -lf <name>

이 명령어는 프로세스 이름이 <name>과 일치하는 프로세스들을 나열한다. 예를 들어, bash라는 이름의 프로세스를 찾으려면 다음과 같이 사용한다.

$ pgrep -lf bash
665131 bash
665656 bash
665912 bash
...

top 또는 htop 명령어

tophtop은 실시간으로 시스템의 프로세스를 모니터링할 수 있는 명령어이다. 이 명령어들은 프로세스 이름을 포함하여 다양한 정보를 제공하며, 특정 프로세스 이름을 검색할 수 있다.

사용 예제

top

또는

htop

실행 후 Shift + / 키를 눌러 특정 프로세스 이름을 검색할 수 있다.

참고

답글 남기기