Presentation is loading. Please wait.

Presentation is loading. Please wait.

Some Example C Programs. These programs show how to use the exec function.

Similar presentations


Presentation on theme: "Some Example C Programs. These programs show how to use the exec function."— Presentation transcript:

1 Some Example C Programs

2 These programs show how to use the exec function.

3 exec Function calls Used to begin a processes execution. Accomplished by overwriting process imaged of caller with that of called. Several flavors, use the one most suited to needs.

4 exec Function calls int execv( char *path, char *argv[]) ; path: directory path to executable image. Can be your program, or system program. argv: Array of pointers to null terminated strings. These are the arguments to the program being executed.

5 exec Function calls two conventions with argv: 1) argv[0] should hold the name of the program to be executed. 2) The last element must be NULL.

6 main (int argc, *argv[]) { int pid ; char *args[2] ; pid = fork() ; if (pid ==0) { args[0] = “./a.out” ;All executed by args[1] = NULL ;child process i = execv(“./aout”, args) ; printf(“OOOpppssss.\n”) ; } else printf(“Not a problem!\n”) ; Executed by parent }

7 int pid ; char *args[2] ; pid = fork() ;

8 int pid ; char *args[2] ; pid = ? fork Parent int pid ; char *args[2] ; pid = 0 Child

9 int pid ; char *args[2] ; pid = fork() if (pid == 0) {args[0] = “./a.out” ; args[1] = NULL ; i = execv(“./aout”, args) ; printf(“OOOpppssss.\n”) ; } else printf(“Not ….”);

10 Parent int pid ; char *args[2] ; pid = fork() if (pid == 0) {args[0] = “./a.out” ; args[1] = NULL ; i = execv(“./aout”, args) ; printf(“OOOpppssss.\n”) ; } else printf(“Not ….”);

11 Parent int pid ; char *args[2] ; pid = fork() if (pid == 0) {args[0] = “./a.out” ; args[1] = NULL ; i = execv(“./aout”, args) ; printf(“OOOpppssss.\n”) ; } else printf(“Not ….”); Child int pid ; char *args[2] ; pid = fork() if (pid == 0) {args[0] = “./a.out” ; args[1] = NULL ; i = execv(“./aout”, args) ; printf(“OOOpppssss.\n”) ; } else printf(“Not ….”);

12 Parent int pid ; char *args[2] ; pid = fork() if (pid == 0) {args[0] = “./a.out” ; args[1] = NULL ; i = execv(“./aout”, args) ; printf(“OOOpppssss.\n”) ; } else printf(“Not ….”); a.out

13 These slides show how to parse input from the command line.

14 #include main() { char *ptr ; char input[1024] ; int i ; while(1) { i = read(0, input, 512) ; //read from stdin ptr = input ; while (*ptr != '\n') { if (*ptr == ' ') printf("Space!\n") ; else printf("Read %c\n", *ptr) ; ptr++ ; }

15 #include main() { char *ptr ; char input[512] ; int i ; while(1) { i = read(0, input, 512) ; //read from stdin ptr = input ; In C, the name of an array is the base address of the array. Now ptr points to the first element of array input.

16 #include main() { char *ptr ; char input[512] ; int i ; while(1) { i = read(0, input, 512) ; //read from stdin ptr = input ; while (*ptr != '\n') ptr is the address of a character. *ptr dereferences the pointer to give the actual value at that address. T h i s i s 140 141 142............................ ptr = 140 *ptr = ‘T’

17 { if (*ptr == ' ') printf("Space!\n") ; else printf("Read %c\n", *ptr) ; ptr++ ; } printf statement prints string to terminal. Uses control string and variables. printf(“Read %c\n”, *ptr) ; Other control characters are %d: integer %s: string %l: long int %f: float/double EXAMPLE

18 These slides show how to use the fork() and exec() system calls.

19 Simple program to fork a new process #include main (int argc, char *argv[]) { int pid ; char *args[2] ; printf("Ready to FORK\n") ; pid = fork() ; if (pid ==0) printf("I AM THE CHILD!!\n") ; else printf("I AM THE PARENT!!!\n") ; }

20 Simple program to start a new process executing #include main (int argc, char *argv[]) { int pid ; char *args[2] ; printf("Ready to FORK\n") ; pid = fork() ; if (pid ==0) { printf("I AM THE CHILD!!\n") ; args[0] = "./a.out" ; args[1] = NULL ; execv("./a.out", args) ; printf("OPPSSSS\n") ; } else printf("I AM THE PARENT!!!\n") ; wait(NULL) ; }

21 Simple program to show how children get out of control if not monitored by the parent. #include main (int argc, char *argv[]) { int pid ; char *args[2] ; printf("Ready to FORK\n") ; pid = fork() ; if (pid ==0) { printf("I AM THE CHILD!!\n") ; args[0] = "./a.out" ; args[1] = NULL ; execv("./a.out", args) ; printf("OPPSSSS\n") ; } else printf("I AM THE PARENT!!!\n") ; //wait(NULL) ; }


Download ppt "Some Example C Programs. These programs show how to use the exec function."

Similar presentations


Ads by Google