Я написал программу, которая получает аргументы командной строки, такие как ls
, cat
, и выполняет их.Теперь мне нужно расширить эту программу для перенаправления ввода-вывода, а также выполнить shell-каналы.Вот моя программа для простой оболочки.
if ((pid = fork()) == -1 ) { /* error exit - fork failed */
perror("Fork failed");
exit(-1);
}
if (pid == 0) { /* this is the child */
printf("This is the child ready to execute: %s\n",argv[1]);
execvp(argv[1],&argv[1]);
perror("Exec returned");
exit(-1);
} else {
wait(pid,0,0);
printf("The parent is exiting now\n");
...
}
Я не знаю, как добавить каналы и перенаправление в этой же программе!
dup(pipeID[0]);
close(pipeID[0]);
close(pipeID[1]);
execlp(argv[3],argv[3],argv[4],0);
Я знаю, что должен использоватьdup()
или dup2()
для перенаправления и pipe()
тоже, но как мне сделать все это вместе в одной программе?