gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 01:22:34 24 4
gpt4 key购买 nike

#!/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。

    在你的情况下,你似乎混合了这两种形式。 &如果传递给shell,字符仅具有“在后台启动此程序”的含义。在您的程序中,与号作为第 5 个参数传递给 xterm 命令。

    正如 Jakob Kruse 所说,简单的答案是使用 system 的单字符串形式。 .如果任何参数来自不受信任的来源,您必须使用引用或转义来使它们安全。

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

    关于perl - 如何在后台运行 Perl 系统命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2711520/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com