加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 22:04:22 所属栏目:大数据 来源:网络整理
导读:#!/usr/bin/env perluse 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
#!/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().

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读