|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Valentin Nechayev 2:5020/400 14 Jun 2002 10:23:20 To : Alexander Javoronkov Subject : Re: sendmail, milter -------------------------------------------------------------------------------- >>> Alexander Javoronkov wrote: AJ> Люди добрые ! Кто имел дело со зверем milter'ом ? Имел. AJ> Вдогонку ещё вопрос... пайп по определению может быть только в одну AJ> сторону - либо из stdin вызываемой программы, либо в stdout... а как AJ> можно сделать так, чтоб отдать программе в stdin данные, а потом забрать AJ> из stdout результат обработки ? Plain C, please. Тебе весь код написать? Его много будет. Идея же совершенно простая и понятная после полминуты обдумывания - делается два пайпа, а не один. Где-то так: pipe(p_to); pipe(p_from); cpid = fork(); if( cpid == -1 ) { ... } else if( cpid == 0 ) { /* child */ dup2( p_from[1], 1 ); dup2( p_to[0], 0 ); close( p_from[0] ); close( p_from[1] ); close( p_to[0] ); close( p_to[1] ); exec(...); } else { /* parent */ close( p_from[1] ); close( p_to[0] ); /*---читать-писать---*/ } Читать-писать - там может потребоваться немного event-driven кусок - если программа не принимает все данные прежде чем начинать выдавать ответ. P.S. А вообще - иди в ru.unix.prog с этим /netch --- ifmail v.2.15dev5 * Origin: Dark side of coredump (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/7368074abce2.html, оценка из 5, голосов 10
|