Search code examples
cunixbuffering

buffer confusion


Could anyone clarify on the types of buffers used by a program?

For eg:

I have a C program that reads from a stdin to stdout.

What are the buffers involved here? I'm aware that there are 2. One provided by the kernel on which a user don't have any control. One provided with standard streams namely stdout, stdin and stderr. Each having a separate buffer.

Is my understanding correct?

Thanks, John


Solution

  • If you are working on linux/unix then you could more easily understand that there are three streams namely

    1.STDIN: FILE DESCRIPTOR VALUE 0 (IN unix)

    2.STDOUT :FILE DESCRIPTOR VALUE 1

    3.STDERR :FILE DESCRIPTOR VALUE 2

    By default these streams correspond to keyboard and monitor.In unix we can change these streams to read input from file instead of keyboard.To display output on a file rather than monitor using close(),dup() system calls.Yes there are 3 buffers involved.To clear the contents of input buffer in c we use fflush() function. If you want to know more about handling these streams in UNIX then let me Know.