0
在C程序中,在main
我打電話給一個系統功能使用system()
。 現在我想要該進程的pid,由system()
開始。 有什麼方法可以獲得該pid?如何獲得使用系統調用啓動的進程的PID?
在C程序中,在main
我打電話給一個系統功能使用system()
。 現在我想要該進程的pid,由system()
開始。 有什麼方法可以獲得該pid?如何獲得使用系統調用啓動的進程的PID?
不,一般來說沒有用。當system()
的調用返回到你的程序時,子進程已經終止並被收穫,所以沒有進程(甚至沒有殭屍進程)供它參考。
如果您需要啓動一個進程並保留其PID,則需要您自己(注意父項中的返回值)fork()
以及子項exec()
該命令。在家長中,您現在擁有PID,並可以使用它(例如,在waitpid()
中)。
這些天'posix_spawn'通常更容易。 http://linux.die.net/man/3/posix_spawn – davmac
當'system(3)'返回時,不再有任何(子)進程。你的問題只有在另一個線程纔有意義;在單線程應用程序中,它根本沒有意義。 –