From b1f5c3f8d6671b4331cef1dcebdf63b7a43a3a2b Mon Sep 17 00:00:00 2001 From: priyanka Date: Wed, 24 Jun 2015 15:03:17 +0530 Subject: initial commit / add all books --- 1088/CH24/EX24.4/Example4.sce | 82 ++++++++++++++++++++++++++++++++++++ 1088/CH24/EX24.4/Result4.txt | 96 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 178 insertions(+) create mode 100755 1088/CH24/EX24.4/Example4.sce create mode 100755 1088/CH24/EX24.4/Result4.txt (limited to '1088/CH24/EX24.4') diff --git a/1088/CH24/EX24.4/Example4.sce b/1088/CH24/EX24.4/Example4.sce new file mode 100755 index 000000000..1f362959f --- /dev/null +++ b/1088/CH24/EX24.4/Example4.sce @@ -0,0 +1,82 @@ +clear +flag=1 +mode(-1) + +printf("Example 4 : Show the effect of obtaining child termination status by WEXITSTATUS \n") +disp("****************************************************************") +disp("Answer : ") +disp("INSTRUCTIONS : ") +halt(' ') +disp("1.These programs are part of systems programming PURELY in Unix and the commands have NO EQUIVALENT IN SCILAB") +halt(' ') +disp("2.However the .c files which are displayed here are also made into a seperate file.If you are a unix user then try compiling and running the programme with gcc or cc compiler") +halt(' ') +disp("3.The outputs displayed here are just MOCK OUTPUTS which are DISPLAYED IN THE TEXTBOOK") +halt(' ') +disp("4.The inconvenience is regretted.") +halt('.............Press [ENTER] to continue.....') +halt("") +clc +printf("\tUNIX SHELL SIMULATOR(DEMO VERSION WITH PRELOADED COMMANDS)\n\n\n") +i=0 +i=i+1;f(i)='/* Program: wait.c -- Uses wait to obtain child'+ascii(39)+'s termination status.The WEXITSTATUS macro fetches the exit status */' +i=i+1;f(i)='#include ' +i=i+1;f(i)='#include ' +i=i+1;f(i)='#include ' +i=i+1;f(i)='' +i=i+1;f(i)='int main(int argc, char **argv) {' +i=i+1;f(i)=' int fd,exitstatus;' +i=i+1;f(i)=' int exitval = 10; /* Value to be returned by child */' +i=i+1;f(i)=' ' +i=i+1;f(i)=' fd= open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);' +i=i+1;f(i)=' write(fd, '+ascii(34)+'Original process writes\n'+ascii(34)+',24); /* First write */' + i=i+1;f(i)='' +i=i+1;f(i)=' switch(fork()) {' +i=i+1;f(i)=' case 0:' +i=i+1;f(i)=' write(fd,'+ascii(34)+'Child writes\n'+ascii(34)+',13); /* Second write */' +i=i+1;f(i)=' close(fd); /*Closing here doesn'+ascii(39)+'t affect parent'+ascii(39)+'s copy */' +i=i+1;f(i)=' printf('+ascii(34)+'CHILD: Terminating with exit value %d\n'+ascii(34)+', exitval);' +i=i+1;f(i)=' exit(exitval); /* Can also use_exit(exitval) */' +i=i+1;f(i)=' ' +i=i+1;f(i)=' default:' +i=i+1;f(i)=' wait(&exitstatus); /* Waits for child to die */' +i=i+1;f(i)=' printf('+ascii(34)+'PARENT: Child terminated with exit value %d\n'+ascii(34)+',WEXITSTATUS(exitstatus));' +i=i+1;f(i)=' /*Extracting exit status */' +i=i+1;f(i)=' write(fd, '+ascii(34)+'Parent writes\n'+ascii(34)+', 14); /* Third write */' +i=i+1;f(i)=' exit(20); /* Value returned to shell; try echo $? */' +i=i+1;f(i)=' }' +i=i+1;f(i)='}' +n=i + + +printf("\n\n$ cat wait.c # to open the file ") +halt(' ') +u=mopen('wait.c','wt') +for i=1:n + mfprintf(u,"%s\n",f(i)) + printf("%s\n",f(i)) +end +mclose(u) +halt('') +clc + +halt(' ') + printf("$ cc wait.c") + halt(' ') + printf("$ a.out foo") + halt(' ') + printf("CHILD: Terminating with exit value 10\nPARENT: Child terminated with exit value 10\n") + halt(' ') + printf("$ cat foo ") + halt(' ') + printf("Original process writes\nChild writes\nParent writes\n") + halt(' ') + +printf("\n\n\n$ exit #To exit the current simulation terminal and return to Scilab console\n\n") +halt("........# (hit [ENTER] for result)") +//clc() + +printf("\n\n\t\t\tBACK TO SCILAB CONSOLE...\nLoading initial environment') +sleep(1000) + + diff --git a/1088/CH24/EX24.4/Result4.txt b/1088/CH24/EX24.4/Result4.txt new file mode 100755 index 000000000..1d3d913d7 --- /dev/null +++ b/1088/CH24/EX24.4/Result4.txt @@ -0,0 +1,96 @@ + ans = + + 1. + +-->exec('Example4.sci') + +-->clear + +-->flag=1 + flag = + + 1. + +-->mode(-1) +Current date is 23-Jun-2013 + +Welcome to the Textbook Companionship Project 2013 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Book Title : UNIX CONCEPTS AND APPLICATIONS + + Book Edition : 4 + + Book Author : Sumitabha Das ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Code Author : Pranav Bhat T ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Chapter Number : 24 + + Chapter Title : Systems programming II- Files ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +Example 4 : Show the effect of obtaining child termination status by WEXITSTATUS + + **************************************************************** + + Answer : + + INSTRUCTIONS : + + 1.These programs are part of systems programming PURELY in Unix and the commands have NO EQUIVALENT IN SCILAB + + 2.However the .c files which are displayed here are also made into a seperate file.If you are a unix user then try compiling and + running the programme with gcc or cc compiler + + 3.The outputs displayed here are just MOCK OUTPUTS which are DISPLAYED IN THE TEXTBOOK + + 4.The inconvenience is regretted. +.............Press [ENTER] to continue..... UNIX SHELL SIMULATOR(DEMO VERSION WITH PRELOADED COMMANDS) + + + + +$ cat wait.c # to open the file /* Program: wait.c -- Uses wait to obtain child's termination status.The WEXITSTATUS macro fetches the exit status */ +#include +#include +#include + +int main(int argc, char **argv) { + int fd,exitstatus; + int exitval = 10; /* Value to be returned by child */ + + fd= open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644); + write(fd, "Original process writes\n",24); /* First write */ + + switch(fork()) { + case 0: + write(fd,"Child writes\n",13); /* Second write */ + close(fd); /*Closing here doesn't affect parent's copy */ + printf("CHILD: Terminating with exit value %d\n", exitval); + exit(exitval); /* Can also use_exit(exitval) */ + + default: + wait(&exitstatus); /* Waits for child to die */ + printf("PARENT: Child terminated with exit value %d\n",WEXITSTATUS(exitstatus)); + /*Extracting exit status */ + write(fd, "Parent writes\n", 14); /* Third write */ + exit(20); /* Value returned to shell; try echo $? */ + } +} + $ cc wait.c $ a.out foo CHILD: Terminating with exit value 10 +PARENT: Child terminated with exit value 10 + $ cat foo Original process writes +Child writes +Parent writes + + + +$ exit #To exit the current simulation terminal and return to Scilab console + +........# (hit [ENTER] for result) + + BACK TO SCILAB CONSOLE... +Loading initial environment +-->diary(0) -- cgit