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

    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就可以正常输出了

你可能感兴趣的:(linux编程)