【发布时间】:2014-05-14 12:19:09
【问题描述】:
我使用 perl comnsole Term::ReadLine::Gnu 编写了一个脚本。 当我在后台使用控制台外部命令时,如何运行? 我已经设法支持各种外部命令,例如 ls -l 等,但我也希望支持在后台运行命令,例如 emacs &,但我似乎无法让进程在后台运行. 有解决办法吗?
【问题讨论】:
标签: perl
我使用 perl comnsole Term::ReadLine::Gnu 编写了一个脚本。 当我在后台使用控制台外部命令时,如何运行? 我已经设法支持各种外部命令,例如 ls -l 等,但我也希望支持在后台运行命令,例如 emacs &,但我似乎无法让进程在后台运行. 有解决办法吗?
【问题讨论】:
标签: perl
要在后台执行某些操作,可以使用system:
#!/usr/bin/env perl
use strict;
use warnings;
system q(emacs &);
print "hello";
这将在后台打开 emacs 并立即打印“hello”。如果您在命令中删除了&,它将等待emacs 关闭,然后再打印“hello”。
正如@Brad 在 cmets 中指出的那样,请注意,这仅适用于 shell 理解 & 的系统。例如,如果您在 Windows 上运行,则必须将 system 行更改为如下内容:
system q(start /b program.exe);
有关详细信息,请参阅system documentation。
【讨论】:
& 的系统,所以你必须在这些系统上想出其他东西。 (以 Windows 为例)
start,我在考虑可能使用 Win32::API 或类似的东西。 start 在这种情况下可能会更好。
Term::ReadLine::Gnu。