>
>>man pipe, man fdopen ;-)
>
>ну... читал..., а по существу че-нить сказать?
А может программу за вас еще написать? Голова она ведь не только, чтобы есть :)))
Для небольших объемов передаваемых/получаемых данных пойдет следуюший вариант:
Создать 2 пары дескрипторов в родителе перед запуском потомка - pipe(fd1);pipe(fd2);В потомке close(fd1[1]); close(fd2[0]); В родителе close(fd1[0]); close(fd2[1]); Теперь все что пишем в fd1[1] родителя, можно прочитать через fd1[0] потомка, все что пишем в fd2[1] потомка, можно прочитать через fd2[0] родителя. Далее по желанию в родителе fdopen(fd1[1],"w"); fdopen(fd2[0],"r"); Если надо запустить внешнюю прогу и читать/писать ее stdout/stdin, то можно в потомке dup2(fd2[1],STDOUT_FILENO); dup2(fd1[0],STDIN_FILENO), затем вызвать exec.
У меня эта схема сработала только при небольшом количестве передаваемых/получаемых данных, почему - не знаю, а копаться лень.
sas,vpn,XMan,RomanSa и другие - может вы знаете? :)))