Advertisement
Guest User

Untitled

a guest
May 24th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.34 KB | None | 0 0
  1. #include <unistd.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <sys/types.h>
  5. #include <sys/wait.h>
  6. #include <string.h>
  7.  
  8. int main(int argc, char* argv[])
  9. {
  10.     char nume_dir[100];
  11.     int cod_term;
  12.  
  13.     if(argc > 1){
  14.         strcpy(nume_dir,argv[1]);
  15.     }
  16.     else{
  17.         printf("Introduceti numele directorului dorit:");  scanf("%s", nume_dir);
  18.     }
  19.  
  20.     switch( fork() )
  21.     {
  22.         case -1:    perror("Eroare la primul fork");  exit(1);
  23.  
  24.         case  0:    execlp("ls","ls","-l",nume_dir,NULL);
  25.                 perror("Eroare la primul exec");  exit(2);
  26.  
  27.         default:    wait(&cod_term);
  28.                 if( WIFEXITED(cod_term) )
  29.                     printf("Comanda ls a rulat, terminandu-se cu codul de terminare: %d.\n", WEXITSTATUS(cod_term) );
  30.                 else
  31.                     printf("Comanda ls a fost terminata fortat de catre semnalul: %d.\n", WTERMSIG(cod_term) );
  32.     }
  33.  
  34.     // Pasul #3: invocarea celei de-a doua comenzi: rm -r -i nume_dir
  35.   switch( fork() )
  36.   {
  37.     case -1:    perror("Eroare al doilea fork");  exit(1);
  38.  
  39.     case  0:    execlp("rm","rm","-r","-i",nume_dir,NULL);
  40.         perror("Eroare la primul exec");  exit(2);
  41.  
  42.     default:    wait(&cod_term);
  43.         if( WIFEXITED(cod_term) )
  44.           printf("Comanda rm a rulat, terminandu-se cu codul de terminare: %d.\n", WEXITSTATUS(cod_term) );
  45.         else
  46.           printf("Comanda rm a fost terminata fortat de catre semnalul: %d.\n", WTERMSIG(cod_term) );
  47.   }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement