我正在爲我的CS類編寫一個shell,並且如果用戶傳入了'&'字符,部分項目涉及在後臺運行進程。發送進程到後臺並將控制返回到我的shell
如果一個進程在前臺運行,我只需要execvp
該進程,並且它仍處於終端的控制之中,因爲它在前臺。但是,如果它是後臺進程,那麼在開始執行進程後,我必須將控制權返回到主外殼程序。我知道系統調用tcsetpgrp(pid_t)
將進程作爲參數放在前臺,但我不太明白如何使用它。
如果是後臺進程,我應該在execvp
之後調用tcsetpgrp
嗎?如果是這樣,我可以通過調用getpid
來獲得我的shell的pid嗎?
讓我們試試這個。在你最喜歡的終端發起兩場會議。在第一個運行一個命令,讓說**貓**,這是在fg。切換到其他會話,使用ps **找到cat的** pid。發送信號** SIGSTOP **使用** kill **。觀察發生的情況並分享您的發現。 – tuxuday