23,110
社区成员
发帖
与我相关
我的任务
分享
/*
*一些变量的定义
*/
fd_set writefds;
struct timeval tv;
tv.tv_sec = 5;
tv.tv_usec = 0;
//管道已经有其他进程创建了
//创建的管道名称:fifo_req_name
if(access(fifo_req_name,F_OK)<0){ //管道不存在
return ERR;
}
fifo_fd = open(fifo_req_name,O_RDWR);
if(fifo_fd < 0){
/*****/
}
FD_ZERO(&writefds);
FD_SET(fifo_fd,&writefds);
ret = select(fifo_fd+1,&writefds,NULL,NULL,&tv);
if (ret == 0){
printf("time out!\n");
return ERR;
} else if (ret<0 ){
printf("select error!\n");
return ERR;
}else if (ret >0){
if (FD_ISSET(fifo_fd,&writefds)){
/*
*余下操作
*/
}
}
int select(int nfds, fd_set *restrict readfds, fd_set *restrict writefds, fd_set *restrict errorfds, struct timeval *restrict timeout);
楼主,你自己man下select看看,select第二个参数是readfds,你没有数据,当然是timeout了,想要判断write,自己看看说明