Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2506 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°170021
Toxin
Carpe ★★ Vitam
Posté le 02-07-2002 à 16:53:19  profilanswer
 

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. | Ma chaîne YT
mood
Publicité
Posté le 02-07-2002 à 16:53:19  profilanswer
 

n°170026
Toxin
Carpe ★★ Vitam
Posté le 02-07-2002 à 16:54:24  profilanswer
 

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. | Ma chaîne YT
n°170031
antp
Super Administrateur
Champion des excuses bidons
Posté le 02-07-2002 à 16:56:46  profilanswer
 

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
n°170032
Toxin
Carpe ★★ Vitam
Posté le 02-07-2002 à 16:57:14  profilanswer
 

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. | Ma chaîne YT

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

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

 

Sujets relatifs
[Langage perso] Probleme de syntaxe.[java] récupérer le path du fichier .class associé à une classe
probleme avec mon mailing en PHP[C++] Problème de pointeur this, je capte plus rien :??:
infos d'un fichier[C, libpng] Lecture d'un fichier PNG ?!
manipuler un fichier excel SANS excel installé.Comment intégrer un flux de vidéo ds un environnement java?
[W3C] Probleme avec HEIGHTOuvir un fichier dans son appli depuis un lien web???
Plus de sujets relatifs à : [ Awk, Gawk, Nawk ] problème de flux sur fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR