08-18-2008
I don't know what a "standard exchange buffer in Windows" is but it seriously sounds like it's not at all the same thing.
With input/output buffering you have a cache of sorts between two devices. Say, a disk: the driver reads a sector of data into a buffer, then passes it to the program which displays it. You can not read a partial sector from the disk; at end of file, you get a partially filled buffer, and a flag which tells you how much of it is actually real data.
Line buffering works on lines instead of disk sectors. Line buffered I/O reads through the next newline, then passes on the buffer.
By running tail -f on a file which is slowly being written by another program, you can see block buffering in action. The output pauses in the middle of a line, then all of a sudden, after a longish wait, you get another burst of text as another buffer of multiple lines of output is completed and written out to disk (and then read and displayed by tail). cat -u prevents this behavior, and forces unbuffered output even if the output device would call for block-buffered or line-buffered output.
Unbuffered output is much less efficient, so unless you really need unbuffered output, go for buffered.
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Ok, so I have a shell script which runs a specific command, and that command sends it's output to the display. At certain times, the command sends buffered output, and at other times, the command sends unbuffered output in the form of a % progress bar, so if I run the command, the output I receive... (0 Replies)
Discussion started by: vikingshelmut
0 Replies
2. UNIX for Advanced & Expert Users
Hi All,
I am talking about unix col(1) command used for some reverse line filtering etc.
And I notice that the stdout of this command is line buffered i.e. the stdout will flush the data in its buffer line by line. So the number of writes performed by stdout are more.
So now if I make stdout... (0 Replies)
Discussion started by: sunilsbjoshi
0 Replies
3. HP-UX
Hi All,
I am talking about unix col(1) command used for some reverse line filtering etc.
And I notice that the stdout of this command is line buffered i.e. the stdout will flush the data in its buffer line by line. So the number of writes performed by stdout are more.
So now if I make stdout... (0 Replies)
Discussion started by: sunilsbjoshi
0 Replies
4. Programming
Hi,
Mentioned in Stevens & Rago "Advanced Programming in the UNIX"
I don't understand why must flush all line-buffered output streams when (a)an unbuffered or (b)a line-buffered stream require data from kernel? (2 Replies)
Discussion started by: Edward114
2 Replies
5. Shell Programming and Scripting
I've been finding myself using a log file colorizer written in perl to reformat and colorize the output from many different programs. Mainly, however, I use it to make the output from "tail -f" commands more readable.
The base perl script I use is based on "colorlogs.pl" available from the... (1 Reply)
Discussion started by: rcsteiner
1 Replies
6. UNIX for Dummies Questions & Answers
I was analyzing the Disk read using hdparm utility.
This is what i got as a result.
# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 108 MB in 3.04 seconds = 35.51 MB/sec
# hdparm -T /dev/sda
/dev/sda:
Timing cached reads: 3496 MB in 1.99 seconds = 1756.56 MB/sec... (1 Reply)
Discussion started by: pinga123
1 Replies
7. Shell Programming and Scripting
Hi All,
I have around 900 Select Sql's which I would like to run in an awk script and print the output of those sql's in an txt file.
Can you anyone pls let me know how do I do it and execute the awk script? Thanks. (4 Replies)
Discussion started by: adept
4 Replies
8. Shell Programming and Scripting
Below script perfectly works, giving below mail output. BUT, I want to make the script mail only if there are any D-Defined/T-Transition/B-Broken State WPARs and also to copy the output generated during monitoring to a temporary log file, which gets cleaned up every week. Need suggestions.
... (4 Replies)
Discussion started by: aix_admin_007
4 Replies
9. Shell Programming and Scripting
Hi All,
I have result log file which looks like this (below): from the content need to consolidate the result and put it in tabular form
1). Intercomponents Checking
Passed: All Server are passed.
======================================================================
2). OS version Checking... (9 Replies)
Discussion started by: Optimus81
9 Replies
10. Red Hat
I ran the following command.
cat abc.c > abc.c
I got message the following message from command cat:
cat: abc.c : input file is same as the output file
How the command came to know of the destination file name as the command is sending output to standard file. (3 Replies)
Discussion started by: ravisingh
3 Replies
LEARN ABOUT HPUX
setvbuf_unl
setbuf(3S) setbuf(3S)
NAME
setbuf(), setvbuf(), setlinebuf() - assign buffering to a stream file
SYNOPSIS
Obsolescent Interface
DESCRIPTION
can be used after a stream has been opened but before it is read or written. It causes the array pointed to by buf to be used instead of
an automatically allocated buffer. If buf is the NULL pointer input/output will be completely unbuffered.
A constant defined in the header file, tells how big an array is needed:
can be used after a stream has been opened but before it is read or written. type determines how stream is to be buffered. Legal values
for type (defined in are:
causes input/output to be fully buffered.
causes output to be line buffered;
the buffer will be flushed when a newline is written, the buffer is full, or input is requested.
causes input/output to be completely unbuffered.
When an output stream is unbuffered, information is queued for writing on the destination file or terminal as soon as written; when it is
buffered, many characters are saved up and written as a block. When the output stream is line-buffered, each line of output is queued for
writing on the destination terminal as soon as the line is completed (that is, as soon as a new-line character is written or terminal input
is requested). can also be used to explicitly write the buffer.
If buf is not the NULL pointer, the array it points to is used for buffering instead of an automatically allocated buffer (from size speci-
fies the size of the buffer to be used. The constant in is suggested as a good buffer size. If input/output is unbuffered, buf and size
are ignored.
By default, output to a terminal is line buffered and all other input/output is fully buffered.
is used to change stream from block-buffered or unbuffered to line-buffered. can be used any time the file descriptor is active.
Obsolescent Interface
assigns buffering to a stream file.
DIAGNOSTICS
If an illegal value for type or size is provided, return a non-zero value. Otherwise, the value returned will be zero.
Note
A common source of error is allocating buffer space as an "automatic" variable in a code block, then failing to close the stream in the
same block.
Allocating a buffer of size or bytes does not necessarily imply that all of size or bytes are used for the buffer area.
AUTHOR
and were developed by HP.
SEE ALSO
flockfile(3S), fopen(3S), getc(3S), malloc(3C), putc(3S), stdio(3S), thread_safety(5), glossary(9).
STANDARDS CONFORMANCE
setbuf(3S)