리눅스 환경에서 프로세스 이름을 얻는 방법은 여러 가지가 있다. 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
, pgrep
및 top
이다.
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
명령어
top
과 htop
은 실시간으로 시스템의 프로세스를 모니터링할 수 있는 명령어이다. 이 명령어들은 프로세스 이름을 포함하여 다양한 정보를 제공하며, 특정 프로세스 이름을 검색할 수 있다.
사용 예제
top
또는
htop
실행 후 Shift
+ /
키를 눌러 특정 프로세스 이름을 검색할 수 있다.