나의 PS 명령어 만들기 (1)

TAEWOO HA·2023년 6월 16일
0

프로젝트 #2

목록 보기
1/8

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 추가

0개의 댓글