请教!!急,烦请各位看看啊

请教!!急,烦请各位看看啊

请教!!急,烦请各位看看啊
while(1){
print "***now start the program to listen on the mps...!***\n";
&timeset;
}

sub tcpdump_o{
print "u can exit the program by pressing ctrl+c anytime!\n";
local $SIG{'ALRM'}=\&timeset;
alarm (60);
$t=`tcpdump -w dudu$year$mon$mday$hour$min`;
}
sub timeset{
$time=time;
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime($time);
$mon+=1;$year+=1900;
&tcpdump_o;
}
我用上面的代码,意图实现只要跨分钟,就自动生成新记录文件.如果手动执行perl程序是没有问题的,但是要保证数据没有丢失很难保证在0秒的时候开始执行.所以想用crontab,但是在crontab里面却无法执行到tcpdump程序.不明白原因,还请指教.




   

搞定了,就是把tcpdump改写.
搞定了,就是把tcpdump改写成绝对路径^^
新问题!!
ft啊,发现按照想法是每次生成新文件后旧文件就不再写了,可是运行发现虽然生成了新文件,但是tcpdump下来的数据竟然是同时写进旧文件的,为什么讷?[CCB]10[/CCB][CCB]21[/CCB][CCB]26[/CCB]
rename也解决不了,只要没.
rename也解决不了,只要没强行终止掉tcpdump就算改了名字后的文件一样还是会被和新文件同时写入。我还是没弄明白原因。现在只能在程序内又嵌入了一个定时,然后到时间强行用kill终止tcpdump然后再重新启动。不过这样在solaris下却出现了影响到系统时钟的问题。[CCB]10[/CCB]