2010-06-22 43 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