Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <sys/types.h>
- #include <sys/wait.h>
- #include <unistd.h>
- #include <stdlib.h>
- int main()
- {
- printf("***MICROSHELL***\n");
- printf("type exit to exit\n");
- printf(">");
- while (1)
- {
- /*czytanie wejscia z kosoli*/
- char input[99];
- fgets(input, 99, stdin);
- /*tutaj sprawdzamy, czy komenda na wejsciu jest exit, jezeli jest wychodzimy z petli while, konczac program*/
- if (strcmp(input, "exit") == 0) {
- break;
- }
- char tokens[5][20];
- char *pch;
- /*sprawdzamy czy komenda posiada argumenty*/
- char *space;
- space = strchr(input, ' ');
- int i = 0;
- /*jezeli tak, dzielimy wejscie na tokeny*/
- if(space){
- pch = strtok(input, " ");
- while (pch != NULL)
- {
- strcpy(tokens[i], pch);
- printf("%s\n", tokens[i]);
- pch = strtok(NULL, " ");
- i++;
- }
- }
- /*jezeli nie przepisujemy wejscie do pierwszego tokena*/
- else{
- strcpy(tokens[0], input);
- }
- /*tworzymy fork naszego programu*/
- int pid = fork();
- /*sprawdzamy czy fork zostal wykonany pomyslnie*/
- if (pid == 0) {
- execlp(tokens[0], tokens, NULL);
- perror("fork");
- exit(EXIT_FAILURE);
- }
- printf(">");
- }
- exit(EXIT_SUCCESS);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement