在perl控制台中使用外部命令

在perl控制台中使用外部命令,perl,Perl,我已经使用perl comnsole Term::ReadLine::Gnu编写了一个脚本。 当我在控制台中时,如何在后台运行外部命令? 我已经设法支持各种外部命令,如ls-l等,但我也希望支持在后台运行命令,如emacs&,但我似乎无法让进程在后台运行。 有解决方案吗?要在后台执行某些操作,可以使用系统: 这将在后台打开emacs并立即打印hello。如果删除命令中的&,它将等待emacs关闭,然后再打印hello 正如@Brad在评论中指出的,请注意,这只适用于shell理解&的系统。例如,

我已经使用perl comnsole Term::ReadLine::Gnu编写了一个脚本。 当我在控制台中时,如何在后台运行外部命令? 我已经设法支持各种外部命令,如ls-l等,但我也希望支持在后台运行命令,如emacs&,但我似乎无法让进程在后台运行。
有解决方案吗?

要在后台执行某些操作,可以使用系统:

这将在后台打开emacs并立即打印hello。如果删除命令中的&,它将等待emacs关闭,然后再打印hello

正如@Brad在评论中指出的,请注意,这只适用于shell理解&的系统。例如,如果在Windows上运行,则必须将系统行更改为以下内容:

system q(start /b program.exe);

有关更多详细信息,请参阅。

这只适用于shell理解尾部的系统,因此您必须在这些系统上想出其他方法。例如Windows,我甚至没有考虑开始,我想使用Win32::API或类似的工具。start在这种情况下可能更好。@Brad我绝对没有在Windows上运行Perl的经验,因此如果有更好的方法,请尽管提一个:我假设OP是在类UNIX系统上运行的,正如他们在问题中提到的Term::ReadLine::Gnu。谢谢,我所做的是区分输入的命令&在最后,我使用了系统函数和常规命令,然后我使用了两个记号``以便捕获输出并打印它。
system q(start /b program.exe);