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

  FORUM HardWare.fr
  Programmation
  C

  Linux - Redirection de la sortie vers un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Linux - Redirection de la sortie vers un fichier

n°1377740
jipo
Kamoulox !
Posté le 30-05-2006 à 18:57:27  profilanswer
 

Slt,
 
J'ai un executable toto que j'ai compilé sous Linux. Ce programme contient pas mal d'appels à printf()
Je l'execute de la façon suivante :

# ./toto


Je vois défiler les différents messages (printf)
Ensuite je veux rediriger les messages du programme vers un fichier. Je l'execute de la façon suivante :

# ./toto > ./liste.txt


Les messages ne défilent plus. Le fichier liste.txt a bien été créé, mais il est systématiquement vide ?!?!?!?!?
 
Y aurait il une science de la redirection qui m'echappe sous Linux ? Un paramètre système pour la gestion des redirections ?  [:aztechxx]


---------------
"Comme des pommes d'or sur des ciselures d'argent, Ainsi est une parole dite à propos" (Proverbes de Salomon)
mood
Publicité
Posté le 30-05-2006 à 18:57:27  profilanswer
 

n°1377758
Emmanuel D​elahaye
C is a sharp tool
Posté le 30-05-2006 à 19:37:50  profilanswer
 

jipo a écrit :

Y aurait il une science de la redirection qui m'echappe sous Linux ?


Quel rapport avec le langage C ?
 
http://forum.hardware.fr/hardwaref [...] ujet-1.htm


Message édité par Emmanuel Delahaye le 30-05-2006 à 19:41:37

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1377760
simple_stu​pid
Keep It Simple Stupid
Posté le 30-05-2006 à 19:41:22  profilanswer
 

Ca me semble vachement curieux ton problème.
En effet, sauf si ton prog contient un truc du style
 


#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
 
int main(void)
{
        if (isatty(1))
                puts("console" );
        else
                puts("tu sauras pas ce que j'écris" );
 
        exit(EXIT_SUCCESS);
}


 
je ne vois pas d'où ca pourrait venir.
Si c'était un problème de permission, tu ne pourrais pas créer le fichier.
Ton disque n'est pas plein?


Message édité par simple_stupid le 30-05-2006 à 22:19:14
n°1377864
jipo
Kamoulox !
Posté le 30-05-2006 à 23:47:33  profilanswer
 

Non je suis root et c'est une machine de la mort qui tue l'espace ... sous RedHat 64 AS


---------------
"Comme des pommes d'or sur des ciselures d'argent, Ainsi est une parole dite à propos" (Proverbes de Salomon)
n°1377943
Taz
bisounours-codeur
Posté le 31-05-2006 à 10:01:46  profilanswer
 

./a.out | tee fichier
 
:o

n°1377961
jipo
Kamoulox !
Posté le 31-05-2006 à 10:20:26  profilanswer
 

désolé Taz,
mais le fichier est bien créé mais vide ...  :??:


---------------
"Comme des pommes d'or sur des ciselures d'argent, Ainsi est une parole dite à propos" (Proverbes de Salomon)
n°1377977
simple_stu​pid
Keep It Simple Stupid
Posté le 31-05-2006 à 10:47:39  profilanswer
 

tee te permet juste de rediriger vers la console et un fichier, en même temps.
 
Compiler en root c'est mal.
 
Tu pourrais poster ton code ici? J'aimerais tester sur ma debian.

n°1378088
jipo
Kamoulox !
Posté le 31-05-2006 à 13:42:14  profilanswer
 

En fait j'ai refait un test à partir d'un tout petit programme où il n'y a que 2 printf().
Et là cela fonctionne :

Code :
  1. # ./test > test.txt


renvoit bien les chaines generees par les printf dans le fichier.
 
Donc cela vient du programme que je maintiens. Ce programme s'appuie sur une interface XMotif. L'interface graphique empecherait-elle la redirection par un moyen ou un autre ? J'ai demandé des éclaircissements à mon client, j'attend ...
 
 


---------------
"Comme des pommes d'or sur des ciselures d'argent, Ainsi est une parole dite à propos" (Proverbes de Salomon)
n°1378097
jipo
Kamoulox !
Posté le 31-05-2006 à 13:52:34  profilanswer
 

Je viens de trouver le pourquoi ....
 
Dans mon programme le main est écrit de la façon suivante :

Code :
  1. main(int argc,char *argv[])


 
Je l'ai modifié en :

Code :
  1. int main(int argc,char *argv[])


 
Et là la redirection fonctionne !  [:audi]  
 
Qqu'un pourrait me fournir une explication ?   :D
Je ne vois pas le rapport direct entre le fait que la fonction retourne int explicitement et la redirection ...


Message édité par jipo le 31-05-2006 à 13:54:07

---------------
"Comme des pommes d'or sur des ciselures d'argent, Ainsi est une parole dite à propos" (Proverbes de Salomon)
n°1378111
jipo
Kamoulox !
Posté le 31-05-2006 à 14:06:52  profilanswer
 

Ben non ... Ca n'a marché qu'une seule fois !  :fou:  :fou:  
et après toujours le meme probleme à nouveau


---------------
"Comme des pommes d'or sur des ciselures d'argent, Ainsi est une parole dite à propos" (Proverbes de Salomon)
mood
Publicité
Posté le 31-05-2006 à 14:06:52  profilanswer
 

n°1378295
jipo
Kamoulox !
Posté le 31-05-2006 à 17:28:11  profilanswer
 

Voilà ...
Cette fois j'ai trouvé : Mon programme quitte avec un _exit(0)
Je pense que les descripteurs de fichier sont fermés, mais que les écritures ne sont pas faites avant la fermeture ...
 
Quelqu'un peut il me confirmer cela, et m'indiquer une manière simple de mettre à jour un fichier de log si on quitte avec _exit() ou si le programme s'arrete sur une erreur ...
 
Merci


---------------
"Comme des pommes d'or sur des ciselures d'argent, Ainsi est une parole dite à propos" (Proverbes de Salomon)
n°1378314
0x90
Posté le 31-05-2006 à 17:49:06  profilanswer
 

t'as fflush(stdout); à la fin ou pas ?


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1378326
jipo
Kamoulox !
Posté le 31-05-2006 à 17:56:54  profilanswer
 

NON
 
Mais même si je l'avais, si jamais le programme plante et part en segm fault, est-ce qu'il y a moyen de recuperer le log ?


---------------
"Comme des pommes d'or sur des ciselures d'argent, Ainsi est une parole dite à propos" (Proverbes de Salomon)
n°1378344
Joel F
Real men use unique_ptr
Posté le 31-05-2006 à 18:25:43  profilanswer
 

y a des bibliotheques compeltes de log sur le web

n°1378354
simple_stu​pid
Keep It Simple Stupid
Posté le 31-05-2006 à 18:37:34  profilanswer
 

jipo a écrit :

Voilà ...
Cette fois j'ai trouvé : Mon programme quitte avec un _exit(0)
Je pense que les descripteurs de fichier sont fermés, mais que les écritures ne sont pas faites avant la fermeture ...
 
Quelqu'un peut il me confirmer cela, et m'indiquer une manière simple de mettre à jour un fichier de log si on quitte avec _exit() ou si le programme s'arrete sur une erreur ...
 
Merci


 
J'ai l'impression que ton code a été codé par des porcs.
Le fait d'appeller _exit() ne change rien.
Les descripteurs de fichier sont fermés, il devrait y avoir écriture.
 
T'as vérifié qu'il n'y avait pas un appel a isatty()?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Linux - Redirection de la sortie vers un fichier

 

Sujets relatifs
sauvegarde de fichierExecuter du SQL en js sans fichier php annexe...c'est possible?
migrer une base access vers une base mysqlimporter un fichier de format .FRX
Création d'une base de donneés à partir d'un fichier XML en VB.NETredirection error stdout lors insertion via fichier
requete sql vers bdd...Nom de fichier : caractères interdits
[javascript] Uploader un fichier en javascript 
Plus de sujets relatifs à : Linux - Redirection de la sortie vers un fichier


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