Advertisement
Guest User

Untitled

a guest
Nov 18th, 2017
688
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.81 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <sys/types.h>
  4. #include <sys/wait.h>
  5. #include <unistd.h>
  6. #include <stdlib.h>
  7.  
  8. int main()
  9. {
  10.         printf("***MICROSHELL***\n");
  11.         printf("type exit to exit\n");
  12.         printf(">");
  13.         while (1)
  14.         {
  15.                 /*czytanie wejscia z kosoli*/
  16.  
  17.                 char input[99];
  18.                 fgets(input, 99, stdin);
  19.                 /*tutaj sprawdzamy, czy komenda na wejsciu jest exit, jezeli jest wychodzimy z              petli while, konczac program*/
  20.                 if (strcmp(input, "exit") == 0) {
  21.                         break;
  22.                 }
  23.  
  24.                 char tokens[5][20];
  25.                 char *pch;
  26.         /*sprawdzamy czy komenda posiada argumenty*/
  27.                 char *space;
  28.                 space = strchr(input, ' ');
  29.                 int i = 0;
  30.         /*jezeli tak, dzielimy wejscie na tokeny*/
  31.                 if(space){
  32.                 pch = strtok(input, " ");
  33.                 while (pch != NULL)
  34.                     {
  35.                             strcpy(tokens[i], pch);
  36.                             printf("%s\n", tokens[i]);
  37.                             pch = strtok(NULL, " ");
  38.                             i++;
  39.                     }
  40.                 }
  41.         /*jezeli nie przepisujemy wejscie do pierwszego tokena*/
  42.                 else{
  43.                     strcpy(tokens[0], input);
  44.                 }
  45.  
  46.                 /*tworzymy fork naszego programu*/
  47.                 int pid = fork();
  48.                 /*sprawdzamy czy fork zostal wykonany pomyslnie*/
  49.  
  50.                 if (pid == 0) {
  51.                         execlp(tokens[0], tokens, NULL);
  52.                         perror("fork");
  53.                         exit(EXIT_FAILURE);
  54.                 }
  55.                 printf(">");
  56.  
  57.         }
  58.     exit(EXIT_SUCCESS);
  59.     return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement