Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: sendmail, milter   Valentin Nechayev   14 Jun 2002 10:23:20 
Архивное /ru.linux/7368074abce2.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional