Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите правильно заюзать dup2()

61K
18 июня 2010 года
0xDEFACE
1 / / 18.06.2010
Всем привет!

В прикрепленном файле 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...):

 
Код:
char* cmd[] = { "bash", (char *)0 };
execvp("bash", cmd);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог