/*
*一些变量的定义
*/
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)){
/*
*余下操作
*/
}
}我再linux 下编译运行的,但是代码每次运行到这一步就直接打印time out了。显示超时了,但是那个管道没有其他操作啊,也不可能阻塞啊,可能代码里面有些单词我手打的时候有些小错误,大家可以忽略,第一次用select 判断超时,不知道我这么写哪出问题了。。我和别人写的demo一样啊
解决方案 »
- nginx负载均衡问题
- 在飞凌imx6q的linux-3.0.35内核上打实时补丁,启动内核后报错,错误日记看不太懂,求大神指教
- Linux ping IP能ping通,但是域名不行
- 安装了zlib1.2.5.1还是一直出现 `ZLIB_1.2.5.1' not found 错误,急救。
- ubuntu里怎么aptitude 换回apt
- Keepalived的track_script不生效?
- ros catkin make 时出现不能创建触发器的错误
- vmware装红帽8卡死
- nginx求助:多worker进程出现部分进程休眠没全工作的情况
- 我的linux连接的是有线网络,ping不通百度
- 求解答linux中安装mysql-5.7.20-linux-glibc2.12-x86_64出错
- redhat linux6.8+JBOSS+oracle10G部署web项目后,每天需要重启服务器网卡才能登录系统!!
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,自己看看说明