Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2086030
  • 博文数量: 414
  • 博客积分: 10312
  • 博客等级: 上将
  • 技术积分: 4921
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-31 01:49
文章分类

全部博文(414)

文章存档

2011年(1)

2010年(29)

2009年(82)

2008年(301)

2007年(1)

分类: C/C++

2008-03-17 08:06:32

一、一些问答
 
问:多线程socket程序,有时候会出现“断开的管道”而退出,也不好调试,是什么原因造成的?如何解决?
答:一般是读管道一端的进程退出了,这时候另一端试图写入这个管道,进程就会收到SIGPIPE信号。如果没有对这个信号处理,进程就会默认退出,显示broken pipe.
用了MSG_NOSIGNAL, 天下立刻太平
send(sock_fd, buff, len, MSG_NOSIGNAL);
recv(sock_fd, buff, len, MSG_NOSIGNAL);

二、关于windows和linux的可移植问题

   send函数最后一个参数

   windows下一般设置为0

   linux下最好设置为MSG_NOSIGNAL,如果不设置,在发送出错后有可 能会导致程序退出。

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