(Note: This is not a question of how to flush a write()
. This is the other end of it, so to speak.)
Is it possible to empty a file descriptor that has data to be read in it without having to read()
it? You might not be interested in the data, and reading it all would therefore waste space and cycles you might have better uses for.
If it is not possible in POSIX, do any operating systems have any non-portable ways to do this?
UPDATE: Please note that I'm talking about file descriptors, not streams.
If you're dealing with a tty, have a look at tcflush()
:
#include <termios.h>
int tcflush(int fildes, int queue_selector);
Upon successful completion, tcflush() discards data written to the object referred to by fildes (an open file descriptor associated with a terminal) but not transmitted, or data received but not read, depending on the value of queue_selector [...]
http://opengroup.org/onlinepubs/007908775/xsh/tcflush.html
For POSIX, use lseek(2)
or lseek64(3)
to seek ahead. For Windows, use SetFilePointer()
or SetFilePointerEx()
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With