亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 2931 | 回復(fù): 5
打印 上一主題 下一主題

想做一個(gè)用系統(tǒng)ping多進(jìn)程的PING測(cè)試.分析出最后結(jié)果. [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2007-06-20 17:10 |只看該作者 |倒序?yàn)g覽
如題.
代碼如下

  1. #!/usr/bin/perl
  2. #ver 1.1.0
  3. #auth FB
  4. #lastModify 20070606 18:20
  5. #date,name,ip,size,min,avg,max,loss
  6. #%date,%name,%size,%min,%avg,%max,%loss
  7. use strict;
  8. no strict "refs" ;
  9. use Data::Dumper;
  10. my %name;
  11. #my $dir="/root/ping/";`mkdir -p $dir`;
  12. my $config="/root/scripts/data.ini";
  13. #read config start
  14. open DATA,"$config";
  15. foreach my $data(<DATA>){
  16.         chomp($data);
  17.         if ($data !~ /^#/){
  18.                 my ($tmpname,$tmpip)=split/\=/,$data;
  19.                 $name{$tmpip}=$tmpname;
  20.         }
  21. }
  22. close DATA;
  23. #read config end




  24. sub ping(@_) {
  25.         my $ip=shift;
  26.         my $times=shift;
  27.         my $size=shift;
  28.         my $dt=time;
  29.         my $loss;
  30.         my $tmpresult=`/bin/ping -c $times -s $size $ip`;
  31.         $tmpresult =~ m/(.*min\/avg\/max\/.*\=)(.*) (ms|usec)/;
  32.         ($$ip{min},$$ip{avg},$$ip{max})=split(/\//,$2);
  33.         #printf ("%s%s%s\n",$min,$avg,$max,$tmp);
  34.         $tmpresult =~ m/(.*\,)(.*) (packet loss)/;
  35.         $loss=$2;
  36.         $loss=~ s/\%//g;
  37.         #print $loss."\n";
  38.         ${$ip}{dt}=$dt;
  39.         ${$ip}{size}=$size;
  40.         ${$ip}{times}=$times;
  41.         ${$ip}{loss}=$loss;
  42.         return \%$ip;
  43. }

  44. #foreach (keys %name){
  45.         #ping($_,"2","16");
  46. #}
  47. my %pid_to_host;
  48. foreach my $tmpip (keys %name){
  49.         if (my $pid = fork){
  50.                 $pid_to_host{$pid} = $tmpip;
  51.                 warn "$pid is processing $tmpip\n";
  52.         } else {
  53.                 ping($tmpip,"2","16");
  54.                 exit;
  55.         }
  56. }
  57. while (keys %pid_to_host){
  58.         my $pid = wait;
  59.         last if $pid <0;
  60.         my $host = delete $pid_to_host{$pid}
  61.                 or warn("why did I see $pid($?)\n"),next;
  62.         warn "reaping $pid for $host\n";
  63. }

  64. foreach (keys %name){
  65.         printf("%s,%s,%s,%s,%s,%s\n",$$_{dt},$$_{min},$$_{max},$$_{avg},$$_{loss},$$_{size});
  66. }
復(fù)制代碼

如果不用多進(jìn)程.單一進(jìn)行,可以出結(jié)果.隱約知道問(wèn)題在哪.但不是很明確.一開始以為多維hash傳遞出問(wèn)題了.
應(yīng)該是fork后出的問(wèn)題,初步懷疑標(biāo)準(zhǔn)輸入輸出的問(wèn)題.調(diào)試看到錯(cuò)誤為得不到TREM.

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2007-06-20 17:11 |只看該作者
data.ini
文件格式
hostname=192.168.0.1
hostname2=192.168.0.2

雖然可以有簡(jiǎn)單方法實(shí)現(xiàn).但想深深研究一下perl,多進(jìn)程,多線程,多維hash, 多維數(shù)組.

[ 本帖最后由 babyles 于 2007-6-20 17:14 編輯 ]

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2007-06-21 17:25 |只看該作者
沒人頂.我明白可能的原因.fork 進(jìn)程后,后面進(jìn)行進(jìn)程回收.保存數(shù)據(jù)的hash應(yīng)該也被destroy.

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2007-06-22 22:40 |只看該作者

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2007-10-29 15:19 |只看該作者

回復(fù) #1 babyles 的帖子

if (my $pid = fork)
這句話什么意思呢??
如果是判斷是子進(jìn)程在話,它寫法就有問(wèn)題,

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2007-10-29 15:25 |只看該作者
%pid_to_host,這個(gè)hash,子進(jìn)程也會(huì)繼承,但他們?cè)诟髯缘鎯?chǔ)空間里,子進(jìn)程只能改變子進(jìn)程變量空間中但%pid_to_host,不會(huì)影響父進(jìn)程%pid_to_host的,
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP