gpt4 book ai didi

perl 运行两个系统命令错误

转载 作者:行者123 更新时间:2023-12-01 09:34:12 25 4
gpt4 key购买 nike

因此,在我的脚本中,我需要调用 unix,并且我通过系统命令来执行此操作,如下所示:

system "bash -i -c 'addmothernode'";

...

perl code ...

...

system "bash -i -c 'addnode -ip=$_'";

但是,每当我在同一个脚本中运行这两个命令时,由于某种原因,我的进程会像这样停止:

[1]+  Stopped                 perl boot.pl

而脚本只有在我运行 fg %1 时才能完成。当我只有其中一个系统调用时,perl 脚本成功完成。但我需要这两个命令,因为它们相互依赖。有人对发生的事情有任何想法吗?谢谢!

更新:

下面的很多答案都说我不需要使用 bash -i 来运行系统命令,我通常知道这是真的,但我需要使用我创建的别名如果我不使用它,别名将不会被识别。所以我确实需要 bash -i.

最佳答案

这个问题与 perl 无关。如果您在交互模式下(-i)一个接一个地启动两个bash,您可以轻松重现这种情况:

$ cat 1.sh 
bash -i -c 'sleep 1'
bash -i -c 'sleep 1'

$ bash 1.sh

[1]+ Stopped bash 1.sh

当然最好在非交互模式下运行bash(不带-i)或者直接运行程序,不带bash,但是如果你出于某种原因需要bash -i 你可以用 setsid 保护它的运行:

$ cat 1.sh
setsid bash -i -c 'sleep 1'
setsid bash -i -c 'sleep 1'
echo done

$ bash 1.sh
done

关于perl 运行两个系统命令错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11305224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com