Возраст процесса в ядре Linux

Учитывая struct task_struct для работы. Как лучше всего определить возраст процесса?

task_struct используется для хранения конкретных указателей на его следующего младшего брата и старшего ребенка. Кажется, что это больше не доступно в некоторых версиях ядра.

Я специально использую ядро ​​Android goldfish. Я пытался научиться использовать структуру list_head для перебора процессов, но я не могу понять, как определить возраст каждого дочернего или родственного процесса.

Итак, какой член или использование task_struct сделает это?


person user2079828    schedule 20.04.2014    source источник
comment
Вы искали в определении task_struct поля с именами, содержащими «время»?   -  person Mat    schedule 20.04.2014
comment
Да. Я пробовал их, и даже используя предоставленные функции для сравнения и вычитания, я не могу получить ничего подходящего. В частности, start_time.tv_sec   -  person user2079828    schedule 20.04.2014
comment
Так что прямо сейчас я просто выбираю самого старшего дочернего элемента по самому низкому pid, расположенному в дочернем элементе list_head для каждого процесса. Будет ли этого достаточно?   -  person user2079828    schedule 20.04.2014


Ответы (2)


Я думаю, вы можете использовать real_start_time или start_time в task_struct. Обновляется в момент создания процесса

    struct timespec start_time;             /* monotonic time */
    struct timespec real_start_time;        /* boot based time */

Примечание: это ванильное ядро, не имею представления о ядре Android.

person Sasi V    schedule 20.04.2014
comment
Итак, это то, что я пробовал, start_time.tvsec всегда возвращал 1. - person user2079828; 22.04.2014
comment
Используйте эту программу для расчета времени запуска процесса brokestream.com/procstat.html, а также исходного кода ядра lxr.free-electrons.com/source/fs/proc/array .c#L476. - person Sasi V; 22.04.2014

Как насчет простоты и поиска ctime /proc/PID/ для каждого интересующего вас процесса. Обратите внимание, что возможные корректировки часов могут привести к тому, что ctime будет выглядеть странно, и хорошая программа не должна давать сбоев, если истекшее время отрицательно из-за такого события.

person Sami Kerola    schedule 20.04.2014