簡體   English   中英

C分叉不起作用

[英]C forking doesn't work

我正在嘗試制作一個服務器,在其中偵聽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字符串。 我究竟做錯了什么?

子進程的返回值為0。 您可以在printf調用之后立即調用fflush(0),看看是否有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM