Impossible de lancer une commande systeme : segmentation fault

Impossible de lancer une commande systeme : segmentation fault - Perl - Programmation

Marsh Posté le 24-09-2002 à 18:37:32    

Bonjour
Sous Solaris, un script perl genere un fichier texte
et lance une commande systeme avec system("maCommande 1> log.txt 2>erreur.txt" )
La commande plante avec un segmentation fault visible dans erreur.txt
 
Que faire ? y a t il moyen d optimiser la memoire ou de vider la memoire avant de lancer le script ?
 
une chose, quand je fais system("commande1;commande2;maCommande 1> log.txt 2>erreur.txt" )
les commandes commande1 et commande2 fonctionnent mais pas
maCommande
 
je peux lancer maCommande du shell (telnet avec les memes environnements de lancement depuis system())...
 
 
une idee ?
Merci
 
 
 

Reply

Marsh Posté le 24-09-2002 à 18:37:32   

Reply

Marsh Posté le 25-09-2002 à 08:52:50    

c'est l'matin, j'ai po bu ma cafetière, j'ai po les zioux en face des treus (ou bien l'inverse  :D) mais je vois déjà 2 soluces pour ton pb :
 
1) passe par eval pour tester l'éventuel message d'erreur que retournerait eval si problème, exemple :
 

Code :
  1. eval { system("maCommande 1> log.txt 2>erreur.txt" ); }
  2. if ($@) {
  3.     print "oula, ca merde grave : $@";
  4. } else {
  5.     poursuite du traitement
  6. }


 
2) autre possibilité :

Code :
  1. $toto = `system("maCommande" )`;


 
arrange-toi pour que ta commande system ne retourne qu'une seule sortie des données et dans ce cas, $toto récupère tout ce que retourne la commande system et tu n'a plus qu'à imprimer le contenu de $toto dans ton fichier log
 
Ceci étant dit, le mieux pour le moment est de passer par la solution 1 car peut être qu'eval retournera un message d'erreur plus précis qu'un segmentation fault
 
tu veux pas nous dire exactement ce que tu fais avec ta commande system ? on gagnerait pitet du temps aussi


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
Reply

Marsh Posté le 25-09-2002 à 11:06:05    

Merci Aricoh de la celerite de ta reponse
 
Alors j ai teste les deux possibilites :
 
1/ dans le premier cas, on n est jamais dans le cas print "oula, ca merde grave : $@"; !!!
delirant
2/ dans le deuxieme cas, le code retour de system() vaut 35584 (qui n est pas un code reference pour la commande)
 
la commande en question est une application de deploiement qui se lance tres bien en dehors du system() (avec les memes parametres)
 
 
 

Reply

Marsh Posté le 25-09-2002 à 11:15:24    

un truc que tu pourrais essayer auquel je viens de penser à l'instant :
 
étant sous Sun, tu peux donc faire un petit script shell ? dans ce cas, peux-tu essayer ta commande dans un script shell et voir si en lançant le script, ça marche sans erreur ?
 
si oui, dans ce cas, ton script perl exécute (system) le script shell
 
c'est pas le top mais bon, peut être que comme ça ...


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
Reply

Marsh Posté le 25-09-2002 à 15:14:18    

twinsen2002 a écrit a écrit :

Bonjour
Sous Solaris, un script perl genere un fichier texte
et lance une commande systeme avec system("maCommande 1> log.txt 2>erreur.txt" )
La commande plante avec un segmentation fault visible dans erreur.txt
 
Que faire ? y a t il moyen d optimiser la memoire ou de vider la memoire avant de lancer le script ?
 
une chose, quand je fais system("commande1;commande2;maCommande 1> log.txt 2>erreur.txt" )
les commandes commande1 et commande2 fonctionnent mais pas
maCommande
 
je peux lancer maCommande du shell (telnet avec les memes environnements de lancement depuis system())...
 
 
une idee ?
Merci
 
 
 
 




 
salut  
pour lancer une commande systeme je procede de la facon suivante :  
 

Citation :


$CMD = "maCommande 1> log.txt 2>erreur.txt";
system($CMD);

 
 
pour moi ca marche a tous les coups

Reply

Marsh Posté le 27-09-2002 à 11:06:32    

salut a tous
 
Aricoh : je viens de faire le test avec un shell, meme symtpome :(
circeedevalette : j utilise la meme syntaxe que toi
 
 
y a  t il un moyen de voir le nb de fichiers ouverts, la memoire libre (ulimit) ...

Reply

Marsh Posté le 30-09-2002 à 16:22:08    

Bonjour
 
La commande a lancer qui fait tout planter
est un shell qui lance en fait une commande java
 
qu est ce qui peut bien faire planter un java en segmentation fault?

Reply

Marsh Posté le 01-10-2002 à 08:04:44    

Ben écoute, sorry mais sur ce coup-là, je sèche complètement !
 
- tu tapes ta commande en mode console, ça marche
- tu écris la commande dans un script shell que tu lances en mode console, ça marche
- tu lances ta commande dans un prog perl, ça merde
- tu lances le script shell dans un prog perl, ça merde
 
Je suppose que la JVM est correctement configurée sur ta bécane ? J'pense que oui sinon t'arriverais pas à tes fins en lançant la commande en manuel


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed