Advertisement
Geralt1001

Untitled

Feb 14th, 2016
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.69 KB | None | 0 0
  1. while(flag<argc-1)
  2.     {
  3.         for(int i=0;i<argc;i++)
  4.         {
  5.             //printf("IIIIIII: %d\n",i);
  6.             if(server_son[i].state==0)
  7.             {
  8.                 endID=wait(&server_son[i].state);  // Parent process waits here for child to terminate.
  9.                 printf("state i przed :%d\n",server_son[i].state);
  10.                 if (endID == -1)
  11.                 {
  12.                     //perror("waitpid error");
  13.                 }
  14.                 else if (endID == 0)
  15.                 {        /* child still running         */
  16.                     //printf("Parent waiting for child at %s", ctime(&when));
  17.                     //sleep(1);
  18.                 }
  19.                 else  
  20.                 {  /* child ended                 */
  21.                     for(int j=0;j<argc;j++)
  22.                     {
  23.                         if (endID == server_son[j].pid)
  24.                         {
  25.                             if (WIFEXITED(server_son[j].state))
  26.                             {
  27.                                 if(server_son[j].state==0)
  28.                                 {
  29.                                     switch (server_son[j].pid = fork())
  30.                                     {
  31.                                         case -1:
  32.                                             printf("Error - fork, errno = %d \n", errno);
  33.                                             exit(1);
  34.                                             break;
  35.                                         case 0:
  36.                                             //server_son[i].port=argv[i+1];
  37.                                             //printf("\t\t\tflaga= %d\n\n",flag);
  38.                                             //printf("\t\tport= %s\n\n",server_son[i].port);
  39.                                             printf("Child process ended because of signal %d.n",WTERMSIG(server_son[i].state));
  40.  
  41.                                             if(execl("./pserv","pserv",server_son[j].port,NULL)<0)
  42.                                             {
  43.                                                 perror("Fatal Error! - execl\n");
  44.                                                 exit(1);
  45.                                             }
  46.                                             //return 0;
  47.                                             break;
  48.                                     }
  49.                                     printf("uruchomilem nowy serwer");
  50.                                 }
  51.                                 else
  52.                                 {
  53.                                     //server_son[j].state=1;
  54.                                     flag++;
  55.                                     printf("\t\t\tflaga= %d\n\n",flag);
  56.                                 }
  57.                             }
  58.                             else if (WIFSIGNALED(server_son[j].state))
  59.                                 printf("Child ended because of an uncaught signal.n");
  60.                             else if (WIFSTOPPED(server_son[j].state))
  61.                                 printf("Child process has stopped.n");
  62.                             else
  63.                             {
  64.                                 server_son[j].state=1;
  65.                                 flag++;
  66.                                 printf("\t\t\tflaga= %d\n\n",flag);
  67.                             }
  68.                         }
  69.                     }
  70.                 }
  71.  
  72.  
  73.                 /*switch (server_son[i].state)
  74.                 {
  75.                     case 0:
  76.                         switch (server_son[i].pid = fork())
  77.                         {
  78.                             case -1:
  79.                                 printf("Error - fork, errno = %d \n", errno);
  80.                                 exit(1);
  81.                                 break;
  82.                             case 0:
  83.                                 server_son[i].port=argv[i+1];
  84.                                 printf("\t\t\tflaga= %d\n\n",flag);
  85.                                 printf("\t\tport= %s\n\n",server_son[i].port);
  86.                                 if(execl("./pserv","pserv",server_son[i].port,NULL)<0)
  87.                                 {
  88.                                     perror("Fatal Error! - execl\n");
  89.                                     exit(1);
  90.                                 }
  91.                                 //return 0;
  92.                                 break;
  93.                         }
  94.                         break;
  95.                     case 1:
  96.                         server_son[i].state=1;
  97.                         flag++;
  98.                         printf("\t\t\tflaga= %d\n\n",flag);
  99.                         break;
  100.                 }*/
  101.             }
  102.             printf("state i :%d\n",server_son[i].state);
  103.         }
  104.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement