Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //=========================TIMEOUT
- // gcc timeout.c -o timeout
- #include <unistd.h>
- #include <stdio.h>
- #include <stdlib.h>
- int main(){
- sleep(3);
- exit(0);
- }
- //=========================TEST
- // gcc test.c -o test
- #include <unistd.h>
- #include <stdio.h>
- #include <stdlib.h>
- int main(){
- sleep(1);
- exit(0);
- }
- //=========================ESPERIMENTO
- #include <unistd.h>
- #include <stdio.h>
- #include <stdlib.h>
- int main(){
- int figlio;
- int cont=0;
- int stato = fork();
- if(stato < 0){
- printf("ERROR\n");
- exit(0);
- }else{
- if(stato == 0){ //PRIMO FIGLIO
- execlp("./timeout", "./timeout", (char*)0);
- }else{ //PADRE
- figlio = stato; //mi salvo il pid del primo figlio (timeout)
- //devo crearmi un altro figlio e lancio test
- stato = fork();
- if(stato < 0){
- printf("ERROR\n");
- exit(0);
- }else{
- if(stato == 0){ //SECONDO FIGLIO
- execlp("./test", "./test", (char*)0);
- }
- }
- }
- }
- //qui arriva solo il padre
- int state;
- int fineProc;
- while((fineProc = wait(&state)) != figlio){
- cont++;
- printf("Programma test terminato con codice: %d\n", WEXITSTATUS(state));
- stato = fork();
- if(stato < 0){
- printf("ERROR\n");
- exit(0);
- }else{
- if(stato == 0){ //FIGLIO
- execlp("./test", "./test", (char*)0);
- }
- }
- }
- if(fineProc == figlio){
- printf("Programma timeout terminato con codice %d\n", WEXITSTATUS(state));
- }
- exit(cont);
Advertisement
Add Comment
Please, Sign In to add comment