1,调用alarm,它在指定超时期满时产生SIGALRM信号。 这个方法涉及信号处理,
而信号处理在不同的实现上存在差异,而且可能干扰进程中现有的alarm调用。
2,在select中阻塞等待I/O(select有内置的时间限制),以此代替直接阻塞在read或
write调用上。
3,使用较新的SO_RCVTIMEO和SO_SNDTIMEO套接口选项。这个方法的问题在于并非所
有实现都支持这两个套接口选项。