perl能这样处理吗?



QUOTE:
原帖由 Nosferatu 于 2008-1-31 16:38 发表
use fork to spawn a new process
and try exec "rxvt -e \"tail file\"" in your child process

rxvt can be replaced with any terminal you like

#!/usr/bin/perl

while(1){
print "please input :\n";
my $line=<>;
chop($line);
if ($line eq "ok"){
#system("tail /etc/passwd");

my $forks=fork();
&kan;
}
}
sub kan {
exec("gnome-terminal -e \"tail /etc/passwd\"");
}


一闪而过什么都看不清楚.面且还退出了while.
我不太会fork不知道这样对不对?


QUOTE:
原帖由 mousejsh 于 2008-1-31 17:13 发表


#!/usr/bin/perl

while(1){
print "please input :\n";
my $line=;
chop($line);
if ($line eq "ok"){
#system("tail /etc/passwd");

my $forks=fork();
&kan;
}
}
sub kan {
exec("gnome- ...

改成这样

[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl

while(1){
print "please input :\n";
my $line=<>;
chop($line);
if ($line eq "ok"){
#system("tail /etc/passwd");

my $forks=fork();
die "fail to fork" unless defined $forks;
if($forks){
}   #parent do nothing
else{
&kan; #let the child do the dirty work
}
}
}
sub kan {
exec("xterm -e  \"tail /etc/passwd;read one \"");
}

让child去exec,parent继续while循环
至于那个一闪而过是因为gnome-terminal命令已经执行完了
可以在后面加一条 read one 命令,这样只有你回车了窗口才会消失
gnome-terminal没有试验成功
不过用xterm倒是成功了,窗口停住了

churchmice
哥们,你运行后在xterm里有内容吗?我怎么用你的代码运行后是一空的xterm?回车退出不了(不过没有关系,可以Ctrl+C来退出)。
我在一个blog上看到可以这样来暂停gnome-terminal
exec("gnome-terminal -e \"sleep 999999\"");
可是不知道怎么样才能显示tail /etc/passwd


QUOTE:
原帖由 mousejsh 于 2008-1-31 21:58 发表
churchmice
哥们,你运行后在xterm里有内容吗?我怎么用你的代码运行后是一空的xterm?回车退出不了(不过没有关系,可以Ctrl+C来退出)。
我在一个blog上看到可以这样来暂停gnome-terminal
exec("gnome-ter ...


我用的是debian
实验室的redhat上也实验过了
没有问题
我用的是redhat as4 -u3

很奇怪
要不站短ip和用户名俺ssh过来看看
我是在家里上网adsl没有公网IP。
我直接用的就是你给修改的哪个代码运行的。
有MSN什么的吗?以后好向你学习呀!我在北京打工.
leenux@live.com

实验室的
Red Hat Enterprise Linux AS release 3 (Taroon)
上要把read one 改成sleep 10才不会窗口一闪就消失
怀疑是xterm的原因