LINUX.ORG.RU

[C][Unix]Время старта процесса

 ,


0

0

Вопрос: можно ли и, если можно, то как узнать время запуска процесса, зная его PID? Есть надежда, что должна быть какая-то библиотечная функция, но поиск ничего вразумительного не дал.

getrusage дает время выполнения, но не реальное время прошедшее со момента запуска процесса.

Ответ на: комментарий от Svoloch

Похоже ничего другого не остается, кроме как лезть в исходники ps.

Как вариант - читать /proc/PID/psinfo, похоже там записана структура psinfo_t из libproc.h, но хочется чего-то стандартного.

SilentBob
() автор топика
Ответ на: комментарий от stpg

$uname -a
SunOS 5.8 Generic_108529-23 i86pc i386 i86pc

$ls /proc/1323
as         fd/        lwp/       rmap       watch
auxv       ldt        map        root       xmap
cred       lpsinfo    object/    sigact
ctl        lstatus    pagedata   status
cwd        lusage     psinfo     usage

sched нету, думаю взять psinfo

SilentBob
() автор топика

> [Unix]

Только ps, да и то я не могу найти в посиксном мане соответствующее...

В линуксе можно глянуть stat(/proc/PID), у него ctime как раз искомое.

const86 ★★★★★
()
Ответ на: комментарий от const86

Пожалуй, это проще всего. Но st_ctime формально не является датой создания, оно может меняться при chmod(2), chown(2), creat(2), link(2), mknod(2), pipe(2), rename(2), unlink(2), utime(2), and write(2) согласно ману соляриса. Вообще, возможно ли это изменение для /proc/PID? И если возможно, то какова вероятность?

SilentBob
() автор топика
Ответ на: комментарий от Svoloch

глянул на ps, оно получает данные процессов вызовом функции readproctab2, описания по ней я не нашел, подозреваю, что читает всю таблицу процессов, заполняя довольно объемные структуры proc_t. Оверхед кажется довольно большим.

SilentBob
() автор топика
Ответ на: комментарий от Gregon

> А не проще ли от абсолютного времени системы отнять время работы процесса, а?
Процесс может простаивать

UVV ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.