2012-11-08 133 views
0

我使用這個子文件作爲我的程序,等待幾個小時才能完成它在windows上做的任務。 當Windows任務完成時,它會更新文本文件中的字符串,以使Linux腳本知道Windows已完成。readline on closed filehandle

我,而它的運行得到這個錯誤: 的ReadLine()在關閉文件句柄

這裏是子

my $numberOfChecks = 28; 
my $sleepTime = 900; 
my $communicationsFile = "/home/user/ICAhome/Win_To_Linux_ComFile.txt"; 
my $winBuild = "1"; 

sub waitForWindowsBuild { 
    while ($numberOfChecks-- $$ $winBuild == "1"){ 
     open (MYFILE, $communicationsFile); 

     while (<MYFILE>){ 
      chomp; 
      if ($_ eq $buildValue){ 
       $winBuild="1"; 
      } 

      sleep($sleepTime); 
     } 

     close(MYFILE); 
    } 
} 

誰能告訴我這是怎麼回事?

謝謝!

回答

1

檢查open是否成功。例如,

open (MYFILE, $communicationsFile) 
    or die("Can't open $communicationsFile: $!\n"); 
+0

謝謝!我會補充一點。如果它試圖打開一個文件20次並每次都出現這個錯誤,這可能會導致服務器崩潰嗎? – user1758367

+0

「崩潰」不明確。如果這就是你的意思,'死'將退出劇本。隨意做「死」以外的事情。 – ikegami

+0

昨晚我沒有死,我跑了這個,當我今天早上回來的時候,服務器壞了,程序給了我大約20個這樣的錯誤。 – user1758367