2014-09-19 3 views
1

я выполнить следующую команду Strace с целью получения данных о PID 13221Запрос на PID командует Strace

strace -fF -tT -all -o abc.txt -p 13221 

Однако, когда команда выполняется и заканчивается я получаю выход, как показано ниже:

Process 13221 attached with 12 threads - interrupt to quit 
Process 13252 attached 
Process 13253 attached (waiting for parent) 
Process 13253 resumed (parent 13252 ready) 
Process 13252 suspended 
Process 13252 resumed 
Process 13253 detached 
Process 13252 detached 
Process 13232 detached 
Process 13228 detached 
Process 13225 detached 
Process 13222 detached 
Process 13221 detached 

Что это за дополнительные PID? Это дети 13221 года? Кто их создает?

Спасибо.

+1

Должно быть, это были потоки вашей программы. Вы использовали «-f». Пожалуйста, добавьте к вашему вопросу эту информацию: cat/proc/13221/tasks –

+0

Я пробовал для другого процесса, и я сделал для него strace и да в/proc/PID/task/некоторые из этих идентификаторов присутствуют. Являются ли эти идентификаторы потока или идентификаторы процессов? Я думаю, что его немой, они должны быть процессами, так как они находятся в/proc/ – Geek

+1

Что касается '' Эти идентификаторы потока или идентификаторы процессов '. В потоках Linux есть процессы. У них также есть PID –

ответ

1

Что это за дополнительные PID? Это дети 13221 года?

Должно быть, это были потоки вашей программы. Вы использовали «-f» в strace, и именно поэтому потоки также контролируются.

Как узнать, какие из них являются нити

Если запустить ls /proc/<PID>/task для вашего процесса вы получите ИДП всех потоков в вашем процессе (включая PID основного потока).

Это проще сделать, когда вам нужно получить PID потоков по сравнению с запуском pstack для того же процесса. pstack на самом деле сценарий gdb, он останавливает процесс при подключении. Так что проще просто запустить ls /proc/<PID>/task

Смежные вопросы