2013-11-22 20 views
0

我正在嘗試編寫一個程序,它執行子進程的forkexec並在後臺執行它。編寫一個C程序將進程移動到背景

我會看到的一種方法是將輸出重定向到/dev/NULL文件並返回到我的主程序。任何其他想法?

+1

當問問題,請提供你想要達到什麼樣的一個具體的例子,也你」目前完成。在目前的狀態下,你的問題不能真正回答,可能會被關閉。要詳細瞭解提出的重要問題,請參閱如何提問 - http://stackoverflow.com/questions/how-to-ask。 – Damodaran

+0

我正在創建自己的shell,它模仿linux shell的行爲。在這裏我想實現'&' - 它在後臺運行進程。希望它能更好地洞察我的問題 – Srikanth

+0

@Srikanth:我會建議將其編輯到您的問題中,並與其中的內容進行協調。 (大多數shell不用'&'重定向輸出。) – Thanatos

回答

0

在一個進程啓動後,shell對進程文件描述符沒有更多的控制權,所以你不能通過shell命令來使其靜音,即終端將它的stdin,stdout和stderr綁定到終端,並且你無法做任何事情重新獲得對該終端的控制權。

有一個叫retty你如何使用它可以在此鏈接retty這個工具是用來連接過程的終端

除此之外,您還可以使用內置的disown命令斷絕關係運行的過程中可以看到工具將從發送SIGHUP信號到程序防止當shell退出

此鏈接可以幫助Link to a similar problem

+0

謝謝,但我只是想知道當你說shell對進程沒有更多的控制時,「fg」是如何工作的? – Srikanth

+0

請正確閱讀@Srikanth我說過程文件描述符。而'bg fg kill'是控制命令,任何人都無法阻止你使用 –

相關問題