C/C++. Named pipe. Именованный канал

Именованный канал (named pipe) применяется как один из методов межпроцессорного взаимодействия: один процесс создает параллельный процесс. Которые имеют возможность взаимодействовать между собой. В отличие от традиционного канала, именованный канал существует в системе и после завершения основного процесса. Поэтому он должен быть «отсоединён» или удалён когда уже не используется.

В Unix системах инициализируется функцией popen() и закрывается - pclose(). На платформе Win32 - _popen(), _pclose().

Если рассмотреть вариант для Win32 систем, то полный синтаксис выглядит следующим образом (ссылка на msdn).

FILE *_popen(
   const char *command,
   const char *mode 
); 
 
*command - собственно, команда на выполнение, например "C://script.exe";
*mode - режим получаемого потока (параллельного процесса). Четыре режима (в
упрощенном виде): r - режим чтения, w - режим записи, b - бинарный режим,
t - текстовый режим.
 
int _pclose(
   FILE *stream 
); 
 
Далее приведен пример работы с именованным каналом. 

#include <stdio.h>
#include <stdlib.h>

int main(void)
{

   char   Buffer[128];
   FILE   *pPipe;

        /* Run script.exe so that it writes its output to a pipe. Open this
         * pipe with read binary attribute.
         */

   if((pPipe = _popen("C://script.exe", "rb")) == NULL)
      exit(1);

        /* Read pipe until end of file. */

   while(!feof(pPipe))
   {
      if(fgets(Buffer, 128, pPipe) != NULL)
         printf(Buffer);
   }

        /* Close pipe and print return value of pPipe. */

   printf("\nProcess returned %d\n", _pclose(pPipe));
}  

Всем удачи!