专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

linux编程中printf打印遇到\n后,后面的打印都没有了,该如何处理

发布时间:2011-06-28 13:53:49 文章来源:www.iduyao.cn 采编人员:星星草
linux编程中printf打印遇到\n后,后面的打印都没有了
源程序是这样:
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
  int ret = 0;
  ret=system("ifconfig | grep eth7");
  printf("ret=%d \n",ret);
  if (0 == ret)
  {
  printf("error");
  }
  printf("exit!!");
   
}
函数执行结果发现:
eth7 Link encap:Ethernet HWaddr 00:0c:29:0e:30:e1  
ret=0 
后面的error和exit都打印不出来了。
求高人解答!

------解决方案--------------------
楼主,我刚试了下,运行正常

至于你机子出问题,也在情理之中。出问题原因就是 system()会调用fork()产生子进程,在创建了fork子进程执行ipconfig命令时,因为存在部分时间运算处理,导致了子进程跟父进程数据处理不同步.同时,ret实际得到直并非0,只不过前一次输出强制转换为0,在后面比较运算中,进程发生错误,直接exit退出


------解决方案--------------------
正常的阿,楼主是不是看漏了
 if (0 == ret)
{
printf("error\n");
}
printf("exit!!\n");
试试
------解决方案--------------------
在每个最后不带\n的printf后面加fflush(stdout);
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: