Chinaunix首页 | 论坛 | 博客
  • 博客访问: 131222
  • 博文数量: 33
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 452
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-01 13:32
文章分类
文章存档

2010年(1)

2009年(32)

我的朋友

分类: 嵌入式

2009-09-10 11:14:57

自己写的一个音频录放网络收发程序,在另一个程序中用execl调用它,可是昨晚发现kill不掉它,这导致waitpid一直在那等,从而程序假死。
仔细分析后发现是接收线程没有退出,于是我一句一句地看,昨晚硬是没发现原因。今天继续看,终于想到了recvfrom默认是阻塞的,发送方关闭后,它就接收不到数据了,就一直在那阻塞着,导致线程不能退出。我把它设置为非阻塞就好了,算算花在它上面的时间有6个小时,教训啊!

从网上摘录一些相关文章,备忘。


阅读(7147) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

jluliuchao2009-09-10 11:22:44

设置非阻塞推荐方法: int val; val = fcntl(sock_fd, F_GETFL, 0); fcntl(sock_fd, F_SETFL, val | O_NONBLOCK);