我使用 Perl 脚本来配置和生成一个已编译的程序,该程序需要以某种方式配置的子 shell,所以我使用$returncode = system("ulimit -s unlimited; sg ourgroup 'MyExecutable.exe'");
我想从中捕获并解析 STDOUT,但我需要将它分叉,以便在作业仍在运行时检查输出。这个问题很接近:
如何将 Perl 输出发送到 STDOUT 和变量?评分最高的答案描述了一个名为的函数,该函数backtick()
创建一个子进程,捕获STDOUT
并在其中运行命令exec()
。
但是我的调用需要多行来配置 shell。一种解决方案是创建一个一次性的 shell 脚本:
#disposable.sh #!/bin/sh ulimit -s 无限 sg ourgroup 'MyExecutable.exe'
然后我可以用backtick(disposable.sh)
或得到我需要的东西open(PROCESS,'disposable.sh|')
。
但我真的不想为此制作一个临时文件。system()
愉快地接受多行命令字符串。我怎样才能得到exec()
或open()
做同样的事情?