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的返回值。