我需要在主脚本仍在运行时打开新终端。在命令行中测试命令时一切正常,但是在运行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;
但仍然无法正常工作。
答案 0 :(得分:0)
取出双引号:
system ('gnome-terminal', '-x', 'sh', '-c', 'sslstrip -a -k -l 8080 -w sslstrip.log');
双引号导致整行被视为命令的名称,而不是命令后跟参数。
但是,你需要派生一个子进程并在那里运行它,因为它在前台运行,system()
在gnome-terminal
退出之前不会返回。您不能将&
与多参数system()
语法一起使用,因为它不运行shell,因此shell元字符不起作用。