Реализация проекта Piping для оболочки C - PullRequest
0 голосов
/ 15 мая 2019

Итак, у меня есть проект, который включает создание простой оболочки на C, и одной из функций является поддержка конвейера, например, такой программы:

. / A.out |./b.out перенаправляет стандартный вывод с ./a.out на стандартный вывод ./b.out

Инструкции в моем состоянии назначения для использования 2 вызовов fork (), по одному для каждой команды.

Вот то, что у меня есть до сих пор ... но я понятия не имею, как использовать 2-х ответные вызовы и что даже делать точно ... Я был бы очень признателен за любые советы!Спасибо!

void doPipe()
{
    // here I have 2 int arrays that will be passed in to pipe(),
    // since pipe takes in an int array of file descriptors to know 
    // where to get input and store output
    int p1[2] = {STDIN_FILENO, STDOUT_FILENO};
    int p2[2] = {STDIN_FILENO, STDOOUT_FILENO};

    // here i fork to run child process
    pid_t pID = fork();

    if (pID == 0} { do stuff in child; }
    else { do stuff in parent;}
}
...