#include #include #include char buf[BUFSIZ]; static void write_text(const char *text, FILE *stream) { size_t len; size_t written; len = strlen(text); written = fwrite(text, 1, len, stream); printf("fwrite(%s) => %zu bytes written/%zu [errno=%i, ferror=%i]\n", text, written, len, errno, ferror(stream)); } int main(int argc, char ** argv) { int n; FILE *f; f = fopen("/dev/full", "w"); #if 0 n = setvbuf(f, (char *) NULL, _IOLBF, 0); printf("setvbuf(NULL) => %i [errno=%d]\n", n, errno); #elif 0 n = setvbuf(f, (char *) buf, _IOLBF, BUFSIZ); printf("setvbuf(%zd bytes) => %i [errno=%d]\n", BUFSIZ, n, errno); #endif #if 0 /* works correctly */ write_text("hello", f); write_text("\n", f); #else write_text("hello\n", f); #endif #if 0 n = fflush(f); printf("fflush() => %i [errno=%d]\n", n, errno); #endif #if 0 write_text("a", f); #endif n = fclose(f); printf("fclose() => %i [errno=%d]\n", n, errno); return 0; }