如何在后台运行Perl系统命令?

前端之家收集整理的这篇文章主要介绍了如何在后台运行Perl系统命令?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
#!/usr/bin/env perl
use warnings; use strict;
use 5.012;
use IPC::System::Simple qw(system);

system( 'xterm','-geometry','80x25-5-5','-bg','green','&' );

say "Hello";
say "World";

我试过这样在后台运行xterm-command,但它不起作用:

No absolute path found for shell: &

什么是正确的方式使其工作?

解决方法

Perl的 system功能有两种模式:

>取一个单一的字符串并将其传递到命令shell,以允许处理特殊字符
>获取字符串列表,执行第一个并将剩余的字符串作为参数传递

在第一种形式中,你必须小心地转义可能对shell有特殊意义的字符.第二种形式通常更安全,因为参数直接传递给被执行的程序,而不涉及shell.

在你的情况下,你似乎正在混合这两种形式. The&字符只有传递给shell时才具有“在后台启动该程序”的意思.在你的程序中,&符号被作为第五个参数传递给xterm命令.

正如Jakob Kruse所说,简单的答案是使用单串形式的系统.如果任何参数来自不信任的来源,您将不得不使用引用或转义来使其安全.

如果你喜欢使用多参数形式,那么你需要调用fork(),然后可能使用exec()而不是system().

猜你在找的Perl相关文章