2016-07-13 7 views
-3

Que signifie le code de sortie tar de -1? J'utilise la commandesystème («tar xzf DirName/tarFile.tar DirNameInsideTar/FileName») en perl échoue et renvoie -1

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

pour untar à partir du script perl. J'essaie de décompresser autour de 1000 fichiers tar mais aléatoirement après avoir désactivé parfois 100 ou parfois 500 fichiers tar la commande système échoue et renvoie -1. J'ai vérifié à la fois l'utilisation de la mémoire du code et l'espace disque disponible et les deux semblent bien. Est-ce que quelqu'un sait ce que l'erreur pourrait être?

+0

Il faut imprimer un message d'erreur sur l'erreur standard quand il fait une erreur. – Barmar

+1

Il n'y a aucun moyen pour nous de savoir ce que cela pourrait être, il y a beaucoup de raisons possibles pour une erreur. – Barmar

+0

Ce n'est pas le cas. J'utilise même --verbose mais cela ne donne pas de message d'erreur – Pranav

Répondre

4

Lorsque system renvoie -1, $! contient le message d'erreur.

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; 

(La valeur retournée par system est également disponible en $?.)