[ Awk, Gawk, Nawk ] problème de flux sur fichier

problème de flux sur fichier [ Awk, Gawk, Nawk ] - Shell/Batch - Programmation

Marsh Posté le 02-07-2002 à 16:53:19    

Je poste ce topic au cas où quelqu'un aurait la même erreur que celle que j'ai déplombée au bout d'une heure, le temps de comprendre ce qui se passait.
 
Mon programme parse un fichier de conf et effectue un traitement pour chaque ligne : création d'un fichier temporaire puis lancement d'un outil qui utilise ce fichier temporaire.
 
Les traitements faits ressemblent donc à :
 


cat $CONF_FILE | nawk -v prmFile="/tmp/$progname.$$.prm" '
BEGIN {
  ...
}
 
{
   printf("Param1=%s\n", $1) >  prmFile
   printf("Param2=%s\n", $2) >> prmFile
 
   system(sprintf("myprog %s", prmFile))
   system(sprintf("rm %s", prmFile))
}


 
En fait dans ce cas le nawk boucle sur les lignes du fichier de conf mais passé la première itération il est incapable de reconstruire prmFile.
 
D'ailleurs même sans le rm la redirection simple ne fonctionne pas. Pourquoi ?
 
C'est là où j'ai perdu une bonne heure le temps de mettre des traces d'exécution au bon endroit et de comprendre le résultat : en fait au moment où le premier '>' est fait un flux est créé et est associé à prmFile.
 
Si un rm est fait le fichier est effacé mais le flux est toujours ouvert !!!! Et il ne peut pas écrire puisque le fichier associé est détruit !
 
S'il n'y avait pas le rm, le problème reste entier puisque le flux a gardé comme info que les informations à écrire sont à placer à la fin du fichier (les >> ).
 
Il faut donc ajouter la ligne suivante avant le rm :
 


   close(prmFile)


 
Et tout rentre dans l'ordre.


Message édité par Toxin le 12-07-2002 à 09:21:04

---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 02-07-2002 à 16:53:19   

Reply

Marsh Posté le 02-07-2002 à 16:54:24    

Manque une subcat SHELL là-dedans au fait.


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 02-07-2002 à 16:56:46    

Toxin a écrit a écrit :

Manque une subcat SHELL là-dedans au fait.




 
faut demander à Marc [:joce]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 02-07-2002 à 16:57:14    

antp a écrit a écrit :

 
 
faut demander à Marc [:joce]




 
C'est fait.


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Sujets relatifs:

Leave a Replay

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