diff --git a/main.c b/main.c new file mode 100644 index 0000000..91e2f5c --- /dev/null +++ b/main.c @@ -0,0 +1,40 @@ +#include +#include +#include +#include + +void list_running_processes(void) { + DIR *proc_dir = opendir("/proc"); + if (!proc_dir) { + perror("Failed to open /proc"); + return; + } + + struct dirent *entry; + struct stat statbuf; + char path[512]; + char *endptr; + + while ((entry = readdir(proc_dir))) { + if (entry->d_name[0] == '.') { + continue; + } + + strtol(entry->d_name, &endptr, 10); + if (*endptr != '\0') { + continue; + } + + snprintf(path, sizeof(path), "/proc/%s", entry->d_name); + if (stat(path, &statbuf) == 0 && S_ISDIR(statbuf.st_mode)) { + printf("%s\n", entry->d_name); + } + } + + closedir(proc_dir); +} + +int main(void) { + list_running_processes(); + return 0; +}