2014-09-19 149 views
1

我執行與獲取有關PID數據的意圖以下strace的命令13221質疑PID的

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 – 2014-09-19 16:43:21

+0

我嘗試了一個不同的過程,我做了一個strace,並在/ proc/PID /任務/這些ID中的一些存在。這些線程ID或進程id?我認爲它是愚蠢的,它們應該是流程,因爲它們在/ proc/ – Geek 2014-09-19 18:28:40

+1

至於'這些線程ID或進程ID'。在Linux上,線程是進程。他們也有PID – 2014-09-19 18:40:13

回答

1

什麼是這些額外的PID?這些是13221的孩子嗎?

它一定是你程序的線程。你已經在strace中使用了「-f」,這就是爲什麼線程也被監控的原因。

如何知道哪些是線程

如果您運行ls /proc/<PID>/task你的過程中,你會得到所有線程的PID在過程(包括主線程的PID)。

當您需要獲取線程PID並與運行pstack進行比較時,執行相同的過程會更簡單。 pstack實際上是一個gdb腳本,它在連接時會停止一個進程。所以它只是運行更簡單ls /proc/<PID>/task