10195501441 преди 3 години
родител
ревизия
232c2d5cdb
променени са 2 файла, в които са добавени 12 реда и са изтрити 11 реда
  1. Двоични данни
      yeeshell
  2. +12
    -11
      yeeshell.c

Двоични данни
yeeshell Целия файл


+ 12
- 11
yeeshell.c Целия файл

@ -160,6 +160,7 @@ int check_pipe(char **args, char **pipe_arg_1, char **pipe_arg_2)
}
pipe_arg_1[j++] = args[i++];
}
pipe_arg_1[j] = NULL;
j = 0;
i++;
@ -167,6 +168,7 @@ int check_pipe(char **args, char **pipe_arg_1, char **pipe_arg_2)
{
pipe_arg_2[j++] = args[i++];
}
pipe_arg_2[j] = NULL;
return pipe_flag;
}
@ -245,19 +247,18 @@ int execute(char *cmdline, char **args)
else
{
int fds[2];
pipe(fds);
pid_t prog_1, prog_2;
printf("%s %s %s %s %s %s\n", pipe_arg_1[0], pipe_arg_1[1], pipe_arg_1[3], pipe_arg_1[4], pipe_arg_1[5]);
printf("%s %s %s %s %s %s\n", pipe_arg_2[0], pipe_arg_2[1], pipe_arg_2[3], pipe_arg_2[4], pipe_arg_2[5]);
printf("%s %s %s %s", pipe_arg_1[0], pipe_arg_1[1], pipe_arg_1[2], pipe_arg_1[3]);
if ((prog_1 = fork()) == 0) /* Child process 1 */
{
dup2(fds[1], 1);
dup2(fds[1], 2);
close(1);
dup(fds[1]);
close(fds[0]);
close(fds[1]);
setpgid(0, 0);
if (execvp(pipe_arg_1[0], pipe_arg_1) <= 0)
{
printf("%s: Command not found\n", pipe_arg_1[0]);
@ -267,10 +268,11 @@ int execute(char *cmdline, char **args)
if ((prog_2 = fork()) == 0) /* Child process 1 */
{
dup2(fds[0], 0);
close(fds[0]);
close(fds[1]);
setpgid(0, 0);
if (execvp(pipe_arg_2[0], pipe_arg_2) <= 0)
{
printf("%s: Command not found\n", pipe_arg_2[0]);
@ -281,12 +283,11 @@ int execute(char *cmdline, char **args)
close(fds[0]);
close(fds[1]);
wait(0);
wait(0);
waitpid(prog_1, NULL, 0);
waitpid(prog_2, NULL, 0);
return 1;
}
return 1;
return 0;
}
int built_in(char **args)

Зареждане…
Отказ
Запис