1 /* 2 * This program starts processes one and two simultaneously. 3 */ 4 5 #include <stdio.h> 6 #include <stdlib.h> 7 #include <string.h> 8 #include <unistd.h> 9 #include <errno.h> 10 #include <sys/types.h> 11 #include <sys/wait.h> 12 13 int main(int argc, char **argv) 14 { 15 pid_t pid; 16 char *Prog; 17 18 if (argc != 3) { 19 fprintf(stderr, "Usage: %s <process> <datafile>\n", argv[0]); 20 exit(2); 21 } 22 23 Prog = strrchr(argv[1], '/'); 24 Prog++; 25 26 if ((pid = fork()) < 0) { 27 printf("Failed in forking, Errno = %d", errno); 28 exit(2); 29 } else if (pid == 0) { /* child */ 30 execl(argv[1], Prog, "0", argv[2], NULL); 31 } else { /* parent */ 32 execl(argv[1], Prog, "1", argv[2], NULL); 33 } 34 35 /*if (waitpid(pid, NULL, 0) != pid) 36 printf("Failed in waitpid, Errno = %d", errno); 37 */ 38 exit(0); 39 } 40