0 Tage Serie
c / intermediate
Snippet

Anpassung der Stream-Pufferung mit setvbuf

Die Funktion setvbuf ermöglicht die manuelle Steuerung der Pufferung eines Dateistreams (wie stdout). Man kann zwischen voll gepuffert (_IOFBF), zeilengepuffert (_IOLBF) oder ungepuffert (_IONBF) wählen. Das Deaktivieren der Pufferung stellt sicher, dass Daten sofort auf das Ausgabegerät geschrieben werden, was für Logging-Systeme entscheidend ist.

snippet.c
c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
int main() {
// Disable buffering for stdout
// Useful for real-time logging or debugging
if (setvbuf(stdout, NULL, _IONBF, 0) != 0) {
perror("Failed to set buffering");
}
printf("This message appears immediately ");
// No fflush(stdout) needed because buffering is off
printf("without waiting for a newline.\n");
return 0;
}
Erklärung
1
setvbuf(stdout, NULL, _IONBF, 0);
Ändert stdout in den ungepufferten Modus; NULL bedeutet interne Pufferzuweisung.
2
_IONBF
Konstante für 'Keine Pufferung' (unbuffered).
3
perror("Failed to set buffering");
Gibt eine Standardfehlermeldung aus, wenn die Pufferänderung fehlschlägt.