免费注册 查看新帖 |

Chinaunix

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

求助: write系统调用问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-05 19:35 |只看该作者 |倒序浏览
printf("before write buf[%s],len[%d]\n",buf,strlen(buf));     此行有打印
        nwrite = write (sockid, buf, left);
        printf("after write buf[%s],len[%d]\n",buf,strlen(buf));        此行没打印,程序估计已退出
程序在调用系统调用write之前打印出来的buf是正确的,长度也对, 打印出before write buf[12345678],len[8]。但调用write后,程序就退出了,下面的printf就打印不出东西了。而且对方接收的内容不是buf里面值不是12345678,而是/home/de。那位仁兄指点下,给点错误可能性分析也好,确实想不出来。越界会出现这种问题吗?但write之前的buf都还是对的,真晕!!!!

[ 本帖最后由 luotell 于 2008-3-6 21:13 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-03-05 19:40 |只看该作者
我不是高手,不过我知道该怎么做,你是不是觉得我没资格解决啊?
那好吧,算了。

论坛徽章:
0
3 [报告]
发表于 2008-03-05 19:49 |只看该作者
别误会,我意思是谁解决的了,在我心中就是高手了,^_^

论坛徽章:
0
4 [报告]
发表于 2008-03-05 20:20 |只看该作者
nwrite = write (sockid, buf, strlen(buf));

论坛徽章:
0
5 [报告]
发表于 2008-03-05 21:36 |只看该作者
呵呵,这是南天软件的corebanking里的trace

论坛徽章:
0
6 [报告]
发表于 2008-03-05 21:58 |只看该作者
你的write挂了,strace一下

论坛徽章:
0
7 [报告]
发表于 2008-03-06 10:24 |只看该作者
我不是高手,要是解决这个问题了,那就说明我是高手,这个跟事实不符合,所以我解决不了。

只能跟楼主说一句,就这点代码是看不出端倪的。

论坛徽章:
0
8 [报告]
发表于 2008-03-06 10:37 |只看该作者
原帖由 luotell 于 2008-3-5 19:35 发表
CBSLog(RunLogFile,"before write buf[%s],len[%d]\n",buf,strlen(buf));
        nwrite = write (sockid, buf, left);
        CBSLog(RunLogFile,"after write buf[%s],len[%d]\n",buf,strlen(buf));
程序 ...


看起来就像 left已经为负数了,而且定义是int类型吧?

论坛徽章:
0
9 [报告]
发表于 2008-03-06 10:50 |只看该作者
烦这些标题党

论坛徽章:
0
10 [报告]
发表于 2008-03-06 21:17 |只看该作者
标题有点不得人心,改标题,望能换回点支持。

[ 本帖最后由 luotell 于 2008-3-6 21:25 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP