in reply to Line by line buffered read
Why are you reading using sysread? Why can't you just read line by line? If it's the sleeps you need, just count the characters you've read, and if it exceeds 4096 (or some other number), reset your counter and sleep. I don't understand the "I must use buffers for speed".