免费注册 查看新帖 |

Chinaunix

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

请教各位大大,为什么sendmsg不成功? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-02-17 10:14 |只看该作者 |倒序浏览
源代码是这样的:

  1. #define CLEN sizeof(struct cmsghdr)+sizeof(int)

  2. union
  3. {
  4. struct cmsghdr cm;
  5. char control[CLEN];
  6. }un;


  7. int main(int argc,char **argv)
  8. {
  9. int fd,new;
  10. struct msghdr msg;
  11. struct cmsghdr *cmsg;
  12. struct iovec iov[1];
  13. char *ptr,c;

  14. if(argc!=2)
  15. {
  16. printf("filename <sockfd#>;\n");
  17. exit((errno>;0)?errno:255);
  18. }

  19. if((fd=open("/ellen/src/t.c",O_RDWR))<0)
  20. {
  21. printf("open file error\n");
  22. exit((errno>;0)?errno:255);
  23. }

  24. new=atoi(argv[1]);

  25. printf("%d\n",new);
  26. msg.msg_control=un.control;
  27. msg.msg_controllen=CLEN;
  28. cmsg=CMSG_FIRSTHDR(&msg);
  29. cmsg->;cmsg_len=CLEN;
  30. cmsg->;cmsg_level=SOL_SOCKET;
  31. cmsg->;cmsg_type=SCM_RIGHTS;
  32. *((int *)CMSG_DATA(cmsg))=fd;
  33. msg.msg_name=NULL;
  34. msg.msg_namelen=0;
  35. ptr="";
  36. iov[0].iov_base=ptr;
  37. iov[0].iov_len=1;
  38. msg.msg_iov=iov;
  39. msg.msg_iovlen=1;

  40. if(sendmsg(new,(struct msghdr *)&msg,0)==-1)
  41. {
  42. printf("sendmsg error\n");
  43. exit((errno>;0)?errno:255);
  44. }
  45. close(fd);
  46. exit(0);
  47. }
复制代码


我把sendmsg改成write,可以发送一个串,应该不是描述符的问题.
请问各位大大,这是咋回事哩?

论坛徽章:
0
2 [报告]
发表于 2005-02-17 10:24 |只看该作者

请教各位大大,为什么sendmsg不成功?

用perror(  )或 strerror( ) 将错误信息打印出来看看

论坛徽章:
0
3 [报告]
发表于 2005-02-17 10:39 |只看该作者

请教各位大大,为什么sendmsg不成功?

输出信息是:Bad file number.

论坛徽章:
0
4 [报告]
发表于 2005-02-18 11:06 |只看该作者

请教各位大大,为什么sendmsg不成功?

哎!~

论坛徽章:
0
5 [报告]
发表于 2005-02-18 13:58 |只看该作者

请教各位大大,为什么sendmsg不成功?

GDB以下看是哪一步出错
new=atoi(argv[1]);
这句是干嘛的

论坛徽章:
0
6 [报告]
发表于 2005-02-21 00:45 |只看该作者

请教各位大大,为什么sendmsg不成功?


看来我要好好读书啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP