Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- while(flag<argc-1)
- {
- for(int i=0;i<argc;i++)
- {
- //printf("IIIIIII: %d\n",i);
- if(server_son[i].state==0)
- {
- endID=wait(&server_son[i].state); // Parent process waits here for child to terminate.
- printf("state i przed :%d\n",server_son[i].state);
- if (endID == -1)
- {
- //perror("waitpid error");
- }
- else if (endID == 0)
- { /* child still running */
- //printf("Parent waiting for child at %s", ctime(&when));
- //sleep(1);
- }
- else
- { /* child ended */
- for(int j=0;j<argc;j++)
- {
- if (endID == server_son[j].pid)
- {
- if (WIFEXITED(server_son[j].state))
- {
- if(server_son[j].state==0)
- {
- switch (server_son[j].pid = fork())
- {
- case -1:
- printf("Error - fork, errno = %d \n", errno);
- exit(1);
- break;
- case 0:
- //server_son[i].port=argv[i+1];
- //printf("\t\t\tflaga= %d\n\n",flag);
- //printf("\t\tport= %s\n\n",server_son[i].port);
- printf("Child process ended because of signal %d.n",WTERMSIG(server_son[i].state));
- if(execl("./pserv","pserv",server_son[j].port,NULL)<0)
- {
- perror("Fatal Error! - execl\n");
- exit(1);
- }
- //return 0;
- break;
- }
- printf("uruchomilem nowy serwer");
- }
- else
- {
- //server_son[j].state=1;
- flag++;
- printf("\t\t\tflaga= %d\n\n",flag);
- }
- }
- else if (WIFSIGNALED(server_son[j].state))
- printf("Child ended because of an uncaught signal.n");
- else if (WIFSTOPPED(server_son[j].state))
- printf("Child process has stopped.n");
- else
- {
- server_son[j].state=1;
- flag++;
- printf("\t\t\tflaga= %d\n\n",flag);
- }
- }
- }
- }
- /*switch (server_son[i].state)
- {
- case 0:
- switch (server_son[i].pid = fork())
- {
- case -1:
- printf("Error - fork, errno = %d \n", errno);
- exit(1);
- break;
- case 0:
- server_son[i].port=argv[i+1];
- printf("\t\t\tflaga= %d\n\n",flag);
- printf("\t\tport= %s\n\n",server_son[i].port);
- if(execl("./pserv","pserv",server_son[i].port,NULL)<0)
- {
- perror("Fatal Error! - execl\n");
- exit(1);
- }
- //return 0;
- break;
- }
- break;
- case 1:
- server_son[i].state=1;
- flag++;
- printf("\t\t\tflaga= %d\n\n",flag);
- break;
- }*/
- }
- printf("state i :%d\n",server_son[i].state);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement