免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1988 | 回复: 2

[Linux] 最简单的进程间管道通信,居然多出来很多乱码 [复制链接]

论坛徽章:
0
发表于 2015-12-14 16:52 |显示全部楼层
本帖最后由 路旁街角 于 2015-12-14 16:55 编辑

这个是父进程代码,头文件是自己搞的···很齐全
  1. #include "public_head.h"

  2. int main()
  3. {
  4.         int fd_rd[2];
  5.         int pid;
  6.         char str[MAX_TALK];
  7.        
  8.         pipe(fd_rd);
  9.                
  10.         if((pid = fork()) == 0)
  11.         {
  12.                 close(fd_rd[0]);
  13.                
  14.                 dup2(STDOUT_FILENO, fd_rd[1]);
  15.                
  16.                 execlp("./child", "child", NULL);
  17.         }
  18.         else
  19.         {
  20.                 close(fd_rd[1]);
  21.                
  22.                 while(1)
  23.                 {
  24.                         if(read(fd_rd[0], str, MAX_TALK) > 0)
  25.                                 printf("%s\n", str);
  26.                 }
  27.         }
  28.        
  29.         return 0;
  30. }
复制代码
子进程代码:
  1. #include "public_head.h"

  2. int main()
  3. {
  4.         int i = 0;
  5.         char str[MAX_TALK];

  6.         while(i < 10)
  7.         {
  8.                 sprintf(str,"server:%d\n",i);
  9.                 write(STDOUT_FILENO, str, sizeof(str));
  10.                 i++;
  11.         }

  12.         return 0;
  13. }
复制代码
应该跑起来棒棒哒,然而····除了正确的信息之外,每个信息之后都带着很长一段乱码 百思不得其解 求助!!

附带执行结果图: QQ截图20151214164531.png

论坛徽章:
0
发表于 2015-12-14 17:02 |显示全部楼层
- -!!傻逼了。。。字符串长怎么能用sizeof

论坛徽章:
0
发表于 2015-12-25 13:55 |显示全部楼层
str变量应该初始化;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP