char* cmd[] = { "bash", (char *)0 };
execvp("bash", cmd);
Помогите правильно заюзать dup2()
В прикрепленном файле ff7.zip есть код программы, который используя одностороннюю связь между родительским процессом и дочерним через пайп (т.е. данные от родителя передаются потомку через пайа) имитирует что-то вроде шелла (исполнитель команд).
В файле ff8.zip находится абсолютно аналогичная программа, в которой используется двусторонняя связь родителя с потомком. То есть родительский процесс передает данные дочерниму процессу через пайп, а дочерний процесс возвращает данные (результат) родителю через другой пайп.
Проблема в том, что никак не получается реализовать ТАКОЙ ЖЕ интерфейс в программе ff8, как и в ff7. Для этого, я так понимаю нужно просто кое-где воткнуть соответствующий dup2() (наверное 2 штуки).
Собственно вопрос к аудитории: КУДА? Пожалуйста помогите разобраться!!
P.S. За оригиналы программ спасибо: http://www.iakovlev.org/index.html?p=226&l1=2&l1=2
Итак, разархивируем ff7.zip. Компилируем, например так:
$ gcc ff7.c -o ff7
Запускаем:
$ ./ff7
Открываем новый терминал/консоль и командуем, например следующее:
$ echo pwd > input.txt
Наблюдаем за результатом в первой консоле.
Нужно достичь АБСОЛЮТНО такого же взаимодействия и интерфейса в ff8, путем правильного использования dup2()...
P.S. Если компилите из-под никсов, понадобится заменить cmd на ваш шелл (csh/bash...):
Код: