2016-01-27 73 views
0

在C程序中,在main我打電話給一個系統功能使用system()。 現在我想要該進程的pid,由system()開始。 有什麼方法可以獲得該pid?如何獲得使用系統調用啓動的進程的PID?

+0

當'system(3)'返回時,不再有任何(子)進程。你的問題只有在另一個線程纔有意義;在單線程應用程序中,它根本沒有意義。 –

回答

3

不,一般來說沒有用。當system()的調用返回到你的程序時,子進程已經終止並被收穫,所以沒有進程(甚至沒有殭屍進程)供它參考。

如果您需要啓動一個進程並保留其PID,則需要您自己(注意父項中的返回值)fork()以及子項exec()該命令。在家長中,您現在擁有PID,並可以使用它(例如,在waitpid()中)。

+1

這些天'posix_spawn'通常更容易。 http://linux.die.net/man/3/posix_spawn – davmac

相關問題