我在任务A中向一pipe写数据,在另一任务内读,数据都读到了,但write还是不返回,为什么?程序部分代码如下
任务A
ioctl(udpSendPipeId,FIONMSGS,(int)&msg_num);
if(msg_num<HEART_PIPE_MSG_NUM)
{
logMsg("write begin !\n");
write(udpSendPipeId,buf,28);
logMsg("write end!\n");
}
任务B
FD_ZERO(&read_set);
FD_ZERO(&write_set);
FD_SET(udp_recv_socket,&read_set);;
FD_SET(udpSendPipeId,&read_set);
selectNum=select(FD_SETSIZE,&read_set,(fd_set *)0,(fd_set *)0,&wait);
if(selectNum==0)
{
logMsg("Error 0:udp_task select()\n");
continue;
}
if(FD_ISSET(udpSendPipeId,&read_set))
{
if((udp_len=read(udpSendPipeId,buf,100))>0)
{
logMsg("SendPipe receive len %d > 0 \n",udp_len);
.......
}
}
[align=right][color=#000066][此贴子已经被作者于2004-7-6 16:41:30编辑过][/color][/align]
关键词:
为什么
write
返回