0

我需要在主脚本仍在运行时打开一个新终端。在命令行中测试命令时一切正常,但是在运行 perl 脚本时,我的新终端窗口会在不到一秒的时间内打开和关闭。

要打开的第一个新终端窗口:

system ('gnome-terminal', '-x', 'sh', '-c', '"sslstrip -a -k -l 8080 -w sslstrip.log"');

要打开的第二个新终端窗口:

system ('gnome-terminal', '-x', 'sh', '-c', '"tail -f sslstrip.log"');

正如我所说,窗户打开和关闭的速度非常快。我需要它们在脚本仍在运行时保持打开状态。

我已经尝试过类似的东西:

#!/usr/bin/perl -l

use strict;
use warnings;

$| =1;

open STDOUT, '>-';
system("du /usr/lib/perl5 &");
close STDOUT;

open STDOUT, '>-';
system("xterm -e du /usr/lib/perl5 &");
close STDOUT; 

但仍然无法正常工作。

4

1 回答 1

0

去掉双引号:

system ('gnome-terminal', '-x', 'sh', '-c', 'sslstrip -a -k -l 8080 -w sslstrip.log');

双引号导致整行被视为命令的名称,而不是命令后跟参数。

但是,您需要派生一个子进程并在其中运行它,因为它在前台运行并且在退出system()之前不会返回gnome-terminal。您不能使用&多参数system()语法,因为它不运行 shell,因此 shell 元字符不起作用。

于 2013-06-25T19:06:45.807 回答