c - 为什么该服务器不输出任何内容?

标签 c loops printf

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>

int main()
{

int sock, newsock;
    struct sockaddr server_name = {AF_UNIX, "Fred"};
    socklen_t len=sizeof(struct sockaddr)+5;

    if( (sock=socket(AF_UNIX,SOCK_STREAM,0)) ==-1)
    {
        printf("error creating socket");
        return -1;
    }

    if( bind(sock,&server_name,len) != 0 ) //binding
    {

        printf("socket bind error ");
        return -1;
    }


   if(listen(sock,10)!=0)  //set sock to listen
   {
        printf("error listening");
        return -1;
   }

    printf("Waiting for connections....");

   while(1)
   {
        newsock=accept(sock, (struct sockaddr*)NULL, NULL);

        char temp[1000]="gggggg\n";
        write(newsock,temp,strlen(temp));

        write(newsock,temp,strlen(temp));
        close(newsock);

        sleep(1);

   }

return 0;
}

“等待连接...”没有出现在我的屏幕上。有什么问题?我到处尝试打印功能。什么也没有出现..有什么问题吗?我没有看到我关闭了标准输出..有人可以帮忙吗?谢谢。

最佳答案

默认情况下,标准输出是行缓冲的。您的程序输出一些没有换行符的内容,然后进入循环。您需要添加一个新行,如下所示:

printf("Waiting for connections....\n");

出于类似的原因,错误消息应该输出到标准错误,因为它没有被缓冲。

fprintf(stderr, "error creating socket\n");

关于c - 为什么该服务器不输出任何内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23378694/

相关文章:

c - 体系结构 x86_64 MAC GCC 的 undefined symbol

c++ - Windows OS的I/O优先级

从 (x,y) 位置计算对角线元素

字符c[] ="Albus"; printf ("%c",c);

c - 为什么在 printf 中需要强制转换?

c - 尝试使用C编程中的结构和函数将单数名词改为复数

arrays - 如何从数组中打乱文本而不重复单词并遍历整个数组? ( swift )

c - 循环中的第二个 Scanf 未被读取。跳转到 else 条件

c - 确定结束数字后在C中循环?

python - 如何很好地打印带有编号的列和行的数组(在Python中)?