2010-06-22 44 views
60

如何在bash中實現fork和exec?bash中的fork和exec

讓我們假設腳本

echo "Script starts" 

function_to_fork(){ 
sleep 5 
echo "Hello" 
} 

echo "Script ends" 

基本上我想要的是功能,被稱爲C一樣,我們使用fork和exec調用新工藝..

從腳本預期的父母腳本將結束,然後在5秒後打印「Hello」。

回答

105

使用符號,就像你從shell會。

#!/usr/bin/bash 
function_to_fork() { 
    ... 
} 

function_to_fork & 
# ... execution continues in parent process ... 
+2

這不完全相同,「叉」。我使用C或Ruby中的fork來測試一些命令,並且它運行良好。但是像上面這樣使用「&」,它就會失敗。 – user180574 2015-09-21 17:05:06

+0

不錯,但是...當我嘗試使用某個功能時,我通常會失敗。我使用單獨的腳本並調用它。更多功能。重定向和後臺功能更加直觀,可以通過命令行更輕鬆地進行測試。 – nroose 2016-03-02 22:54:17

29

如何:

(sleep 5; echo "Hello World") & 
+0

這是叉和等待 – Brian 2013-10-10 17:08:55

+0

@staticx意味着進程將叉,但父母不會繼續執行,直到'()'回報? – msanford 2014-08-15 20:00:22

+0

@Brian這不等我,只是叉 – BryanK 2016-08-06 04:26:53