in reply to STDIN inheritance during exec and difference between getc and sysread
getc is buffered IO. The first call to a buffered IO call causes a full buffer of data -- 4096 bytes or as much as is available -- to be read from the device into the buffer. Then, in the case of getc(), just the first character of that input is returned to the caller. Subsequent calls to getc() return their data from that buffer.
Sysread on the other hand only reads as much as is requested from the device. Subsequent sysreads need to go back to the device for more.
The implication of your findings is that whilst the filehandle is shared across exec; the buffers used by buffered IO are not. Which is probably as it should be.
|
|---|