Как узнать количество потоков, запущенных в процессе, из / proc / [pid] / stat в Linux?

8284
Irlanco

У меня есть пид процесса. Я хотел бы знать текущее количество потоков, запущенных в процессе. Я знаю, что могу прочитать / proc / pid / stat для этой информации, но я не уверен, как конкретно получить количество потоков из stat. Кто-нибудь может помочь?

Спасибо!

6
http://stackoverflow.com/questions/268680/how-can-i-monitor-the-active-thread-count-of-a-process-jvm-on-linux Ciro Santilli 新疆改造中心 六四事件 法轮功 9 лет назад 0

1 ответ на вопрос

5
David Schwartz

The number of entries in /proc/pid/task is the number of threads in the process. Also, /proc/pid/status has a Threads line. In /proc/pid/stat, it's the 20th field.

Ах, я бы много раз попробовал это, но я только что понял, что мой метод получения идентификатора процесса неверен. Я запускаю код пользовательского пространства, который читает и пишет в файл proc. Я использую модуль для чтения и записи в файл proc. Могу ли я получить внутри кода модуля идентификатор процесса, который пытается записать в файл proc? Спасибо за любую помощь! Irlanco 12 лет назад 0
Если вы хотите получить свою собственную информацию, просто используйте `/ proc / self`, это ярлык для получения вашего собственного PID и составления пути, содержащего его. Конечно, вы также можете вызвать getpid, чтобы получить свой PID. David Schwartz 12 лет назад 0
Я считаю, getpid () из библиотеки пользовательского пространства и не работает в пространстве ядра. Это правда? Или есть версия ядра? В противном случае я попробую / proc / self спасибо! Irlanco 12 лет назад 0
Если вы хотите сделать это из кода ядра, посмотрите, как это делает `proc`, и скопируйте его. Вам нужна `task_struct`, и вам нужно атомарно прочитать его член` signal-> count`. Чтобы получить доступ к текущей задаче, используйте `current`. David Schwartz 12 лет назад 0