【问题标题】:Using external commands in a perl console在 perl 控制台中使用外部命令
【发布时间】:2014-05-14 12:19:09
【问题描述】:

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

【问题讨论】:

    标签: perl


    【解决方案1】:

    要在后台执行某些操作,可以使用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

    【讨论】:

    • 这只适用于 shell 理解尾随 & 的系统,所以你必须在这些系统上想出其他东西。 (以 Windows 为例)
    • 我什至没有考虑过start,我在考虑可能使用 Win32::API 或类似的东西。 start 在这种情况下可能会更好。
    • @Brad 我完全没有在 Windows 上运行 Perl 的经验,所以如果有更好的方法,请随时提出建议 :) 我假设 OP 在类似 UNIX 的系统上运行正如他们在问题中提到的Term::ReadLine::Gnu
    • 谢谢,我所做的就是区分以&结尾输入的命令,然后我使用系统函数和常规命令,然后我使用了两个勾号``以便我可以捕获输出并打印出来。
    猜你喜欢
    • 1970-01-01
    • 2016-10-08
    • 2018-07-01
    • 1970-01-01
    • 2012-06-21
    • 2013-11-22
    • 2016-01-29
    • 2016-08-29
    • 1970-01-01
    相关资源
    最近更新 更多