tty , cmd , pid 출력
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
#include <unistd.h>
#include <ncurses.h>
int main() {
initscr(); // ncurses 초기화
DIR *dir = opendir("/proc");
struct dirent *entry;
if (dir == NULL) {
perror("opendir");
exit(-1);
}
clear(); // 화면 초기화
while ((entry = readdir(dir)) != NULL) {
if (entry->d_type == DT_DIR) {
char *pid = entry->d_name;
if (atoi(pid) > 0) {
char path[1024];
sprintf(path, "/proc/%s/cmdline", pid);
FILE *file = fopen(path, "r");
if (file) {
char cmd[1024];
fgets(cmd, sizeof(cmd), file);
fclose(file);
printw("PID: %s\tCMD: %s\tTTY: %s\n", pid, cmd, ttyname(STDIN_FILENO));
}
}
}
}
closedir(dir);
refresh();
getch(); // 사용자 입력 대기
endwin(); // ncurses 종료
return 0;
}
ncurses
- N초마다 갱신하는 것을 가능하게 해 준다.
- gcc 할 때 -lncurses 추가