Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

dopmat / block2 / pipes

.c
Скачиваний:
8
Добавлен:
15.03.2015
Размер:
1.13 Кб
Скачать
#include <stdio.h>
#include <string.h>
#include <sys/types.h>

int main (int argc, char * argv[])
{
  int pipedes[2];
  pid_t pid; 
  pipe(pipedes);
  pid = fork(); //создание дочернего процесса
  if ( pid > 0 )  //выполнение в процессере-родителе
  {  
    char  *str = "String passed via pipe\n";
    close(pipedes[0]); //закрытие ненужного дескриптора
    write(pipedes[1], (void *) str, strlen(str) + 1); //запись в поток содержимого str
    close(pipedes[1]); //закрытие потока
  }  
  else //выполнение в дочернем процессе
  {
    char buf[1024];
    int len;
    close(pipedes[1]); //закрытие ненужного дескриптора
    while ((len = read(pipedes[0], buf, 1024)) != 0) //чтение из потока ввода в буфер
    write(2, buf, len); //запись в станд. поток ошибок содержимого буфера
    close(pipedes[0]); //закрытие потока ввода
  }
  return 0;
}
Соседние файлы в папке block2