使用Nohup的Linux中的多程序调用

时间:2015-03-15 07:20:07

标签: linux tcl nohup

现在我在Linux环境中遇到了一个问题。

情况如下: 程序A调用程序B,程序B调用程序C.

程序B使用nohup调用程序C,因此无论我们是否关闭程序B,程序C都可以在后台运行。

但现在的问题是如果后者没有停止,程序A将忙于等待程序C.

我知道当程序A调用程序B时我可以使用nohup,但它会导致程序A调用程序B并进入下一阶段而不等待程序B.

这是我想要的:程序A调用程序B =>程序B调用程序C =>通过UI关闭程序B,在后台运行程序C,最后程序A将进入下一阶段。

我该怎么办?这些程序是用TCL编写的。

非常感谢!

1 个答案:

答案 0 :(得分:2)

最简单的事情可能是从程序B运行程序C,如下所示:

exec nohup tclsh programC.tcl >/dev/null </dev/null &

无论如何,您无法以任何有意义的方式与子流程进行交互,但这首先是您有效使用nohup所获得的。

变体形式

您也可以测试您是否确实需要nohup;它可能足以做到这一点:

exec tclsh programC.tcl &

&必须在最后;它告诉Tcl在后台运行子程序,这对你正在做的事情来说已经足够了。

要试验的另一件事是,如果您可以使用>@stdout <@stdin作为重定向。他们不允许程序B与程序C交互,但他们可能会让用户这样做。