-
buffer stdout et fflush
Salut,
J'utilise un code sur un cluster de calcul (apparement Rocks 4.2.1 (Cydonia)). Une fois le job soumis sur l'un des noeuds du cluster et lancé, toutes mes sorties printf() sont redirigées automatiquement vers un fichier nom_job.oxxxx.
o = out, xxxx = numéro du job.
Normalement printf écrit dans le flux de sortie standard stdout, qui est bufferisé (comment savoir la taille ? c'est surement dépendant de la machine).
Si j'ai bien compris (?), normalement lorsque '\n' est détecté, le buffer est vidé, sauf dans le cas d'une redirection du flux vers un fichier. Ce qui est précisément le cas avec mon cluster...
Donc, j'ai fait un truc un brin sale peut-être :
printf();
fflush(stdout);
mais qui ne "marche pas". Je veux dire que j'ai toujours un décalage entre ce qui est dans le fichier de sortie et ce qui se passe réellement dans le code...
J'ai bien pensé a remplacer mes printf par des fprintf(stderr...) qui n'est pas bufferisé, mais c'est un peu la solution facile, qui n'explique pas ce que je ne comprends pas...
Alors première question :
1/ est-ce que fflush(stdout) marche aussi pour les flux redirigés vers un fichier ?
2/ Si oui, est-ce que donc c'est un 'probleme' lié spécifiquement au cluster, qui fait je ne sais pas trop quoi avec mon flux de sortie ?
Merci