1。fcntl(fd[0], F_SETFL, O_NONBLOCK)
2。在open的时候,传入O_NONBLOCK参数,按非阻塞方式打开
3。可以用select函数,
4
int flag=fcntl(fd,F_GETFL,0); flag |= O_NONBLOCK; if(fcntl(fd,F_SETFL,flag) < 0){ perror("fcntl"); exit(1); }
取消非阻塞:
flag&=~O_NONBLOCK
~O_NONBLOCK 对该值取反
然后再同flag进行“位与”,最终结果是从flag中清除O_NONBLOCK标志
flag=flag&(~O_NONBLOCK);
flag&=~O_NONBLOCK
~O_NONBLOCK 对该值取反
然后再同flag进行“位与”,最终结果是从flag中清除O_NONBLOCK标志