On 02/13/2012 02:28 PM, Bernhard Voelker wrote: > > > On 02/13/2012 02:09 PM, Pádraig Brady wrote: >>> BTW: shouldn't >>>> echo abcdefghijklm | src/dd bs=5 seek=8 oflag=seek_bytes >>>> receive EPIPE? When run on a terminal, dd waits in read() forever. >> True. That's because we try to seek using read() >> on non seekable files, and stdout is readable by default, >> so we'll hang waiting for input from the terminal. >> I.E. this will block: >> >> dd seek=1 if=/dev/null >> >> Not sure what to do there.
In other words, I'm not sure this is an issue > > Hmm, the process writing into the pipe has already exited, > so I don't get why read() doesn't return eof. > > Using O_NONBLOCK if reading from stdin? > Strangely, using iflag=nonblock also blocks ;-( > > echo abcdefghijklm | src/dd bs=5 seek=8 iflag=nonblock seek is for output, skip is for input. cheers, Pádraig.