|
|
1.1 ! root 1: .TH SETBUF 3S "19 January 1983" ! 2: .UC 4 ! 3: .SH NAME ! 4: setbuf, setbuffer, setlinebuf \- assign buffering to a stream ! 5: .SH SYNOPSIS ! 6: .B #include <stdio.h> ! 7: .PP ! 8: .B setbuf(stream, buf) ! 9: .br ! 10: .SM ! 11: .B FILE ! 12: .B *stream; ! 13: .br ! 14: .B char *buf; ! 15: .PP ! 16: .B setbuffer(stream, buf, size) ! 17: .br ! 18: .SM ! 19: .B FILE ! 20: .B *stream; ! 21: .br ! 22: .B char *buf; ! 23: .br ! 24: .B int size; ! 25: .PP ! 26: .B setlinebuf(stream) ! 27: .br ! 28: .SM ! 29: .B FILE ! 30: .B *stream; ! 31: .SH DESCRIPTION ! 32: The three types of buffering available are unbuffered, block buffered, ! 33: and line buffered. ! 34: When an output stream is unbuffered, information appears on the ! 35: destination file or terminal as soon as written; ! 36: when it is block buffered many characters are saved up and written as a block; ! 37: when it is line buffered characters are saved up until a newline is ! 38: encountered or input is read from stdin. ! 39: .I Fflush ! 40: (see ! 41: .IR fclose (3S)) ! 42: may be used to force the block out early. ! 43: Normally all files are block buffered. ! 44: A buffer is obtained from ! 45: .IR malloc (3) ! 46: upon the first ! 47: .I getc ! 48: or ! 49: .IR putc (3S) ! 50: on the file. ! 51: If the standard stream ! 52: .B stdout ! 53: refers to a terminal it is line buffered. ! 54: The standard stream ! 55: .B stderr ! 56: is always unbuffered. ! 57: .PP ! 58: .I Setbuf ! 59: is used after a stream has been opened but before it is read or written. ! 60: The character array ! 61: .I buf ! 62: is used instead of an automatically allocated buffer. If ! 63: .I buf ! 64: is the constant pointer ! 65: .SM ! 66: .B NULL, ! 67: input/output will be completely unbuffered. ! 68: A manifest constant ! 69: .SM ! 70: .B BUFSIZ ! 71: tells how big an array is needed: ! 72: .IP ! 73: .B char ! 74: buf[BUFSIZ]; ! 75: .PP ! 76: .IR Setbuffer , ! 77: an alternate form of ! 78: .IR setbuf , ! 79: is used after a stream has been opened but before it is read or written. ! 80: The character array ! 81: .I buf ! 82: whose size is determined by the ! 83: .I size ! 84: argument is used instead of an automatically allocated buffer. If ! 85: .I buf ! 86: is the constant pointer ! 87: .SM ! 88: .BR NULL , ! 89: input/output will be completely unbuffered. ! 90: .PP ! 91: .I Setlinebuf ! 92: is used to change ! 93: .I stdout ! 94: or ! 95: .I stderr ! 96: from block buffered or unbuffered to line buffered. ! 97: Unlike ! 98: .I setbuf ! 99: and ! 100: .I setbuffer ! 101: it can be used at any time that the file descriptor is active. ! 102: .PP ! 103: A file can be changed from unbuffered or line buffered to block buffered ! 104: by using ! 105: .I freopen ! 106: (see ! 107: .IR fopen (3S)). ! 108: A file can be changed from block buffered or line buffered to unbuffered ! 109: by using ! 110: .I freopen ! 111: followed by ! 112: .I setbuf ! 113: with a buffer argument of ! 114: .SM ! 115: .BR NULL . ! 116: .SH "SEE ALSO" ! 117: fopen(3S), ! 118: getc(3S), ! 119: putc(3S), ! 120: malloc(3), ! 121: fclose(3S), ! 122: puts(3S), ! 123: printf(3S), ! 124: fread(3S) ! 125: .SH BUGS ! 126: The standard error stream should be line buffered by default. ! 127: .LP ! 128: The ! 129: .I setbuffer ! 130: and ! 131: .I setlinebuf ! 132: functions are not portable to non 4.2 BSD versions of UNIX.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.