diff --git a/labs/03/A01569420 b/labs/03/A01569420 new file mode 100644 index 00000000..c9535556 --- /dev/null +++ b/labs/03/A01569420 @@ -0,0 +1,44 @@ +#include +#include +#include +#include +#include + +void execute_argument(char* argument) { + pid_t pid; + pid = fork(); + + if (pid < 0) { + fprintf(stderr, "Fork failed\n"); + return; + } else if (pid == 0) { + + execlp("ls", "-l", NULL); + fprintf(stderr, "Exec failed\n"); + return; + } else { + + int status; + waitpid(pid, &status, 0); + } +} + +int main() { + char argument[100]; + + while (1) { + printf("osh> ls"); + fgets(argument, sizeof(argument), stdin); + + + argument[strlen(argument) - 1] = '\0'; + + if (strcmp(argument, "exit") == 0) { + break; + } + + execute_argument(argument); + } + + return 0; +}