免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3926 | 回复: 5
打印 上一主题 下一主题

问题:线程中调用accept后无返回值异常退出 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-07-25 15:36 |只看该作者 |倒序浏览
void  *GetBuf(void* p)
{
       pthread_detach(pthread_self());
....................
        printf("listen successful , sockfd is %d \n", sockfd)
        if(-1 == (iListenfd = accept(sockfd, (struct sockaddr *)NULL, NULL)))
                {
                        printf ("accept failed : %s \n", strerror(errno));
                        exit(1);
                }

                printf("accept successful \n";
..........................
}
int  main()
     {
             pthread_t pthID;
      
             //GetBuf((void *) );
             pthread_create (&pthID, NULL, &GetBuf, (void *)NULL);
}

测试时主函数里就这一个线程,总是在调用accept后就自动退出,没有打印出错误原因。只打印出前一句listen调用成功,sockfd为一非负值。
如果不用线程,直接调用GetBuf,则accept成功。

论坛徽章:
0
2 [报告]
发表于 2005-07-25 16:39 |只看该作者

问题:线程中调用accept后无返回值异常退出

去除pthread_detach(pthread_self()),该语句放在最后执行,同时打印出errno变量值,定位出具体原因。

论坛徽章:
0
3 [报告]
发表于 2005-07-25 16:45 |只看该作者

问题:线程中调用accept后无返回值异常退出

主线程都死掉了儿子们自然也没了
打印出 printf("listen successful , sockfd is %d \n", sockfd)这句算是运气好了
加个"while(1){sleep(9999);}"在pthread_create()后面试试

论坛徽章:
0
4 [报告]
发表于 2005-07-25 17:17 |只看该作者

问题:线程中调用accept后无返回值异常退出

原帖由 "bleem1998" 发表:
主线程都死掉了儿子们自然也没了
打印出 printf("listen successful , sockfd is %d \n", sockfd)这句算是运气好了
加个"while(1){sleep(9999);}"在pthread_create()后面试试


谢谢大家关心。

我有另外一个程序用了这段代码,可以和客户端建立长连接。为什么这里会退出?线程间不都是平等的吗?

论坛徽章:
0
5 [报告]
发表于 2005-07-25 17:43 |只看该作者

问题:线程中调用accept后无返回值异常退出

可是主线程不能死掉
他死了大家都会死翘翘

论坛徽章:
0
6 [报告]
发表于 2005-07-26 09:23 |只看该作者

问题:线程中调用accept后无返回值异常退出

原帖由 "Solareq" 发表:


谢谢大家关心。

我有另外一个程序用了这段代码,可以和客户端建立长连接。为什么这里会退出?线程间不都是平等的吗?

在主线程最后加个pthread_join,别忘了主线程也是主进程,所有的线程都公用主进程的PCB,如果主进程结束了,释放了PCB,那其它线程怎么办?所有的线程是平等,但是前提是有效的执行上
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP