2013-03-11 81 views
2

我嘗試向特定進程發送SIGTSTP信號,但如何確定進程是否實際上在Linux中使用C庫函數或系統調用暫停?確定進程是否已掛起

+2

上下文通常有幫助。你爲什麼想知道?你究竟在做什麼? – Nemo 2013-03-11 03:49:49

+0

出於好奇,我想在C程序中做到這一點 – jctank 2013-03-11 03:50:51

+3

我相信你對C的侷限性感到困惑; C甚至不需要多個進程,這是你的問題的先決條件。因此,這不是一個C問題。如果您按照「如何確定某個進程是否已暫停[*在此處插入操作系統信息*]?」進行研究,那麼您可能會想出更好的答案。 – Sebivor 2013-03-11 04:13:50

回答

6

/proc/[pid]/stat中讀取。

man page,你可以從這個文件中獲得一個進程的狀態:

狀態%c從字符串「RSDZTW」,其中R是運行

一個字符,S是 睡眠在可中斷的等待中,D正在等待不可中斷 磁盤睡眠,Z是殭屍,T被追蹤或停止(在一個信號上),並且W 正在尋呼。

+0

這真的有幫助,謝謝 – jctank 2013-03-11 03:56:04

+0

@jctank酷,沒問題。給予好評? – Anthony 2013-03-11 04:10:23

+1

@ anthony-arnold,用戶需要15點聲望來投加選票,因爲我發現你的答案很好,我會代表他投。 – 2013-03-11 04:13:20