Список процессов под Unix

avinir60

Как в Си-шной программе получить список запущенных процессов?
Запуск ps в отдельном процессе мне не годится. Желательно какая-нибудь стандартная библиотечная функция. Наверняка ведь есть такая.

berez

Всю информацию о текущих процессах в системе
программы получают из файлов директории /proc .
Все директории в этом каталоге с числовым
именем содержат информацию о процессах
с соответствущим PID.
Читаем директорию = узнаем список прцессов.
Может есть и что-то более высокоуровневое, но
и этого хватает.

tolik1



$ls -l /proc
$

Aleksei66

А ты возьми исходники ps и посмотри, как он смотрит, хрен ли.

Chupa



$ strace ps
....
open("/proc", O_RDONLY|O_NONBLOCK|O_DIRECTORY) = 6
fstat(6, {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
fcntl(6, F_SETFD, FD_CLOEXEC) = 0
getdents(6, /* 57 entries */, 984) = 972
lseek(6, 257, SEEK_SET) = 257
getdents(6, /* 20 entries */, 984) = 288
stat("/proc/1", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
open("/proc/1/stat", O_RDONLY) = 7
read(7, "1 (init) S 0 0 0 0 -1 256 91 408"..., 511) = 200
close(7) = 0
....

avinir60

Всем спасибо. Про /proc я знаю. Просто хотелось проще

avinir60

А как можно найти исходники ps?

abrek

исходники всех программ должны идти в комплекте
Оставить комментарий
Имя или ник:
Комментарий: