Das ist ein bisschen seltsam. Mein Code gab nicht aus, was ich dachte, dass es sollte. Ich habe einige Druckanweisungen in verschiedenen Phasen hinzugefügt, um zu sehen, wo es falsch gelaufen ist. Immer noch nichts. Also habe ich am Anfang von main eine printf-Anweisung hinzugefügt. Dort wurde ich wirklich verwirrt.
Ich nahm also an, dass mit den Dateideskriptoren etwas Lustiges passierte. Ich habe die printf
in eine fprintf
geändert. Immer noch nichts. Drucken in stderr mit fprintf
funktioniert! Warum passiert das?
Das Entfernen aller Elemente aus main mit Ausnahme der ursprünglichen print-Anweisung und der Rückgabe wird gedruckt.
Die Ausgabe wird oft vom System gepuffert. Sie können fflush aufrufen, aber manchmal reicht es aus, die Ausgabe mit einem Zeilenumbruch zu beenden, je nachdem, wie das Caching funktioniert. Versuchen Sie also,
zu ändern %Vor%bis
%Vor%Und wenn das nicht hilft,
%Vor%(Und stderr wird oft nicht zwischengespeichert, da Sie sofort Fehler sehen möchten.)
Schließlich sehen Sie die Ausgabe, wenn das Programm beendet ist (da Dinge dann geleert werden), was wahrscheinlich den Rest des Verhaltens erklärt.
Tags und Links c printf file-descriptor