FD_ZERO(&wfds);
FD_SET(fd,&wfds);
if (select(fd + 1,(fd_set *) 0,&wfds,(fd_set *) 0,&tv) == -1) return -1;
if (FD_ISSET(fd,&wfds)) return write(fd,buf,len);
FD_ZERO(&wfds);
FD_SET(fd,&wfds);
if (select(fd + 1,(fd_set *) 0,&wfds,(fd_set *) 0,&tv) == -1) return -1;
if (FD_ISSET(fd,&wfds)) return write(fd,buf,len);