0

我有一个运行不同 Perl 脚本的系统,我想截取这些脚本的某些参数并将它们传递给我的自定义 shell 脚本。

这就是我所拥有的:

#!/usr/bin/microperl
[...]

if ($number) {
    if (&number_is_b($number)) {
        system("touch $STATE_LOCKED1");
        print 1;
    }
    else {
        system("/script/myscript.sh $number");
        print 2;
    } 
}
else {
    [...]
}

我添加的是

system("/script/myscript.sh $number");

这将调用以下传递参数的 shell 脚本$number

#!/bin/sh
result=$(wget -qO- http://x.x.x.x/result?qs=$1)
[...]

现在一切正常,但我希望原始 Perl 脚本继续进行,而无需等待 shell 脚本的结果,因为这wget可能需要时间。我需要 Perl 脚本自主进行,而不关心 shell 是否成功完成。

是否有可能让它启动,有些人如何忘记它并继续?

你对我该怎么做有什么建议吗?

4

1 回答 1

5

一种可能使其工作的方法是将 & 附加到您的命令以使其在后台运行。不过,这并不总是适用于每个版本的 unix。但值得一试。

system("/script/myscript.sh $number &");

如果这不起作用,我知道还有另外两个选择。一种方法是使用叉子。http://perldoc.perl.org/functions/fork.html。这种方法可能需要一些努力。

还有一个模块Proc::Background允许您在 windows 和 unix 的后台运行进程。

于 2013-03-10T09:41:46.000 回答