Why would select() waste time for a shorter process ie it won't wait until the timeout expires but returns as soon as the data is available.

The best bet is to use read() in its default mode ie...