Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > перенаправление потоков ввода-вывода


Автор: centab 3.6.2007, 15:48
задача такая. распараллелить процесс. из сына в отец по межпроцессорному каналу передать файл.
с этим все понятно.
делаем pipe(pp)
вызываем fork
в сыне делаем так:
close(0);
dup2(pp[0],0)

close (pp[0])
вопрос в том как в этом же процессе заново открыть  поток стандарстного ввода.

Автор: MAKCim 3.6.2007, 16:01
Цитата(centab @  3.6.2007,  15:48 Найти цитируемый пост)
задача такая. распараллелить процесс. из сына в отец по межпроцессорному каналу передать файл.

Код

...
pipe(fds);
...
if ((pid = fork()) == 0) {
    int __stdin = fcntl(STDIN_FILENO, F_DUPFD, 0); /* дублируем дескриптор входного потока */
    dup2(*fds, STDIN_FILENO); /* перенаправляем канал на входной поток, попутно уменьшая счетчик ссылок на него */
}
...

Автор: centab 4.6.2007, 19:59
 xc dv

Автор: MAKCim 4.6.2007, 20:11
Цитата(centab @  4.6.2007,  19:59 Найти цитируемый пост)
xc dv 

?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)