Advertisement
wowonline

Untitled

Dec 12th, 2021
637
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <fcntl.h>
  3. #include <unistd.h>
  4. #include <sys/wait.h>
  5.  
  6. void
  7. execute(char *arg)
  8. {
  9.     pid_t pid = fork();
  10.     if (pid == -1) {
  11.         _exit(1);
  12.     } else if (!pid) {
  13.         execlp(arg, arg, NULL);
  14.         _exit(1);
  15.     }
  16.     return;
  17. }
  18.  
  19. int
  20. check_status(int status)
  21. {
  22.     if ((WIFEXITED(status) && !WEXITSTATUS(status)) == 1) {
  23.         return 0;
  24.     } else {
  25.         return 1;
  26.     }
  27. }
  28.  
  29. int
  30. main(int argc, char *argv[])
  31. {
  32.     int status;
  33.     execute(argv[1]);
  34.     wait(&status);
  35.     if (!check_status(status)) {
  36.         execute(argv[3]);
  37.         wait(&status);
  38.         return check_status(status);
  39.     } else {
  40.         execute(argv[2]);
  41.         wait(&status);
  42.         if (!check_status(status)) {
  43.             execute(argv[3]);
  44.             wait(&status);
  45.             return check_status(status);
  46.         }        
  47.     }
  48.     return 1;
  49. }
  50.  
Advertisement
RAW Paste Data Copied
Advertisement