您的位置:首页 > 运维架构 > Shell

linux下C语言printf没有输出的问题(shell的行缓冲机制)

2015-12-30 10:19 585 查看
while(true)
{
if(recvfrom(sockfd,buf, sizeof(buf), 0, (struct sockaddr*)&src_addr, &len) == -1)
{
perror("receive failed\n");
return -1;
}
printf("%s----from %s:%u\n", buf, inet_ntoa(src_addr.sin_addr), ntohl(src_addr.sin_port));
}


这个是udp编程中接收端的程序的一部分,但是你会发现printf没有输出,用gdb调试,发现程序是正常跑的,这是因为shell是存在行缓冲的(每次攒够一行(出现换行符))才会输出,所以这里在printf的末尾加上\n就可以正常输出了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: