2016-07-13 2 views
-3

zurück Was bedeutet der Codex von -1, der den tar-Code angibt? Ich benutze den BefehlSystem ("tar xzf DirName/tarFile.tarDirNameInsideTar/FileName") in Perl schlägt fehl und gibt -1

system("tar xzf DirName/tarFile.tar DirNameInsideTar/FileName") 

von Perl-Skript entpacken. Ich versuche 1000 TAR-Dateien zu entpacken, aber nach dem Entpacken von manchmal 100 oder manchmal 500 TAR-Dateien schlägt der Systembefehl fehl und gibt -1 zurück. Ich überprüfte sowohl die Speichernutzung des Codes als auch den verfügbaren Speicherplatz und beide scheinen in Ordnung zu sein. Weiß jemand, was der Fehler sein könnte?

+0

Es soll eine Fehlermeldung auf dem Standardfehler drucken, wenn er einen Fehler bekommt. – Barmar

+1

Es gibt keine Möglichkeit für uns zu wissen, was es sein könnte, es gibt viele mögliche Gründe für einen Fehler. – Barmar

+0

Es tut es nicht. Ich benutze sogar --verbose, aber es gibt keine Fehlermeldung – Pranav

Antwort

4

Wenn system-1 zurückgibt, enthält $! die Fehlermeldung.

system("tar xzf DirName/tarFile.tar DirNameInsideTar/FileName"); 

die("Can't execute command: $!\n")    if $? == -1; 
die("Child killed by signal ".($? & 0x7F)."\n") if $? & 0x7F; 
die("Child exited with error ".($? >> 8)."\n") if $? >> 8; 

(Der Wert von system zurückgegeben wird, ist auch als $? verfügbar.)