C叉不起作用

时间:2016-11-29 10:54:22

标签: c fork

我正在尝试创建一个服务器,它可以侦听2个端口并对传入数据执行某些操作,同时每秒打印一个点以让人们知道它仍在运行。我希望使用fork()来完成此操作。我在尝试:

  p = fork();
  if(p == 0){
      if( getsockname( sock1, (struct sockaddr *) &name1, &length1) == -1 ) {
        perror( "getting socket name" );
        exit(3);
      }
      printf( "Socket port #%d\n", ntohs( name1.sin_port ) );

      if( getsockname( sock2, (struct sockaddr *) &name2, &length2) == -1 ) {
        perror( "getting socket name" );
        exit(3);
      }
      printf( "Socket port #%d\n", ntohs( name2.sin_port ) );

  }
  else if(p > 0){
      printf("inhere"); //
      p1 = fork();
          if(p1 > 0) {
            while(TRUE) {
               write(".");
               sleep(1);
            }
          }
...

这甚至不会在子进程中打印inhere字符串。我做错了什么?

1 个答案:

答案 0 :(得分:0)

子进程获取0作为返回值。你可以在printf调用之后立即调用fflush(0)并查看它是否有帮助。