Список процессов под Unix
программы получают из файлов директории /proc .
Все директории в этом каталоге с числовым
именем содержат информацию о процессах
с соответствущим PID.
Читаем директорию = узнаем список прцессов.
Может есть и что-то более высокоуровневое, но
и этого хватает.
$ls -l /proc
$
А ты возьми исходники ps и посмотри, как он смотрит, хрен ли.
$ 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
....
Всем спасибо. Про /proc я знаю. Просто хотелось проще
А как можно найти исходники ps?
исходники всех программ должны идти в комплекте
Оставить комментарий
avinir60
Как в Си-шной программе получить список запущенных процессов?Запуск ps в отдельном процессе мне не годится. Желательно какая-нибудь стандартная библиотечная функция. Наверняка ведь есть такая.