2011-10-16 37 views

回答

3

由於這是你的功課,我不會給你完整的答案。

GNU Glibc manual列出了作業控制shell的要求。讓我們看看你能否理解它。

基本上是:

  • 你必須改變控制終端,使工作在後臺運行

  • 你必須處理SIGCHLD(或wait)監測工作

讀完之後再詢問一次。

+0

嗨,我已閱讀http://www.gnu.org/software/libc/manual/html_node/Launching-Jobs.html#Launching-Jobs。但是我仍然沒有任何想法來實施你提到的控制終端。你能進一步闡述一下嗎? – youcanlearnanything

+0

@ liangtech,點擊「下一步」鏈接。這是27.6.4前臺和後臺中的「tcsetpgrp」 –

0

您需要編寫一個處理SIGCHLD(有時稱爲SIGCLD)信號的信號處理程序,該信號在子結束時發送給父進程。

+0

並在信號處理程序中做什麼? – cnicutar

+0

據我所知,我可以實現一個信號處理程序來「偵聽」SIGCHLD,當子進程終止它將發送一個SIGCHLD信號。 但是命令旁邊的[2] +是什麼 [2] +完成sleep 2 – youcanlearnanything

+0

@ liangteh:「完成」消息不是由孩子寫的 - 它是父進程(shell)寫出一個的子進程已經終止。 --- – ktf