select blocking/nonblocking IO