diff options
author | priyanka | 2015-06-24 15:03:17 +0530 |
---|---|---|
committer | priyanka | 2015-06-24 15:03:17 +0530 |
commit | b1f5c3f8d6671b4331cef1dcebdf63b7a43a3a2b (patch) | |
tree | ab291cffc65280e58ac82470ba63fbcca7805165 /1088/CH24/EX24.4 | |
download | Scilab-TBC-Uploads-b1f5c3f8d6671b4331cef1dcebdf63b7a43a3a2b.tar.gz Scilab-TBC-Uploads-b1f5c3f8d6671b4331cef1dcebdf63b7a43a3a2b.tar.bz2 Scilab-TBC-Uploads-b1f5c3f8d6671b4331cef1dcebdf63b7a43a3a2b.zip |
initial commit / add all books
Diffstat (limited to '1088/CH24/EX24.4')
-rwxr-xr-x | 1088/CH24/EX24.4/Example4.sce | 82 | ||||
-rwxr-xr-x | 1088/CH24/EX24.4/Result4.txt | 96 |
2 files changed, 178 insertions, 0 deletions
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 <stdio.h>' +i=i+1;f(i)='#include <fcntl.h>' +i=i+1;f(i)='#include <sys/wait.h>' +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 <stdio.h>
+#include <fcntl.h>
+#include <sys/wait.h>
+
+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)
|