主脚本仍然运行时打开新终端

时间:2013-06-25 18:47:48

标签: perl terminal system gnome

我需要在主脚本仍在运行时打开新终端。在命令行中测试命令时一切正常,但是在运行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; 

但仍然无法正常工作。

1 个答案:

答案 0 :(得分:0)

取出双引号:

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

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

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