diff options
Diffstat (limited to '1088/CH24/EX24.16/Example16.sce')
-rwxr-xr-x | 1088/CH24/EX24.16/Example16.sce | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/1088/CH24/EX24.16/Example16.sce b/1088/CH24/EX24.16/Example16.sce index 56ba0d218..1cd708ec5 100755 --- a/1088/CH24/EX24.16/Example16.sce +++ b/1088/CH24/EX24.16/Example16.sce @@ -13,7 +13,7 @@ disp("Code Author : printf("+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n") disp("Chapter Number : 24") disp("Chapter Title : Systems programming II- Files") -printf("+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n" +printf("+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n") printf("Example 16 : Show the method of using fork and exec to run a user-defined\n program and kill it in 5 seconds if not completed \n") disp("****************************************************************") disp("Answer : ") @@ -35,8 +35,8 @@ printf("\tUNIX SHELL SIMULATOR(DEMO VERSION WITH PRELOADED COMMANDS)\n\n\n") i=0 i=i+1;f(i)='/* Program: killprocess.c -- Uses fork and exec to run a user-defined program and kills it if it doesnt complete in 5 seconds */' i=i+1;f(i)='#include <stdio.h>' -i=i+1;f(i)='#include <sys/types.h>' -i=i+1;f(i)='#include <sys/wait.h>' +i=i+1;f(i)='#include <sys types.h="">' +i=i+1;f(i)='#include <sys wait.h="">' i=i+1;f(i)='#include <signal.h>' i=i+1;f(i)='' i=i+1;f(i)='pid_t pid;' @@ -49,7 +49,7 @@ i=i+1;f(i)=' signal(SIGALRM, death_handler); /* child dies or an alarm is re i=i+1;f(i)=' ' i=i+1;f(i)=' switch (pid = fork()) {' i=i+1;f(i)=' case -1: printf('+ascii(34)+'Fork error\n'+ascii(34)+');' -i=i+1;f(i)=' case 0: execvp(argv[1],&argv[1]); /* Execute command */' +i=i+1;f(i)=' case 0: execvp(argv[1],&argv[1]); /* Execute command */' i=i+1;f(i)=' perror('+ascii(34)+'exec'+ascii(34)+');' i=i+1;f(i)=' break;' i=i+1;f(i)=' default: alarm(5); /* Will send SIGALRM after 5 seconds */' @@ -63,7 +63,7 @@ i=i+1;f(i)=' void death_handler(int signo) { /* This common handler pics i=i+1;f(i)=' int status; /* exit status for normal termination */' i=i+1;f(i)=' signal(signo, death_handler); /* but sends the SIGTERM signal if */' i=i+1;f(i)=' switch(signo) { /* command doesnt complete in 5 seconds */' -i=i+1;f(i)=' case SIGCHLD: waitpid(-1, &status, 0); /* Same as wait(&status); */' +i=i+1;f(i)=' case SIGCHLD: waitpid(-1, &status, 0); /* Same as wait(&status); */' i=i+1;f(i)=' printf('+ascii(34)+'Child dies; exit status: %d\n'+ascii(34)+',WEXITSTATUS(status));' i=i+1;f(i)=' break;' i=i+1;f(i)=' case SIGALRM: if (kill(pid, SIGTERM) == 0)' @@ -107,3 +107,4 @@ printf("\n\n\t\t\tBACK TO SCILAB CONSOLE...\nLoading initial environment') sleep(1000) +</signal.h></sys></sys></stdio.h>
\ No newline at end of file |