Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2014, 12:09   #1
MariaD
Пользователь
 
Аватар для MariaD
 
Регистрация: 10.01.2013
Сообщений: 56
Вопрос pipe,конвеер[c]

Организовать программно pr1|pr2|pr3>f1

pr4:
Код:
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
int main(int argc,char*argv[])
{
  int fd[2]; pipe(fd);
  int p1=fork();   

  if (p1==0) 
    {
      close(fd[0]);
      dup2(fd[1],1);
      close(fd[1]);
      execlp(argv[1],argv[1],NULL);
    }
  else 
    {
      wait(NULL);
    }

int p2=fork(); 
 if (p2==0) 
    {
      close(fd[0]);
      dup2(fd[1],1);
      close(fd[1]);
      execlp(argv[2],argv[2],NULL);
    }
  else 
    {
      wait(NULL);
    }


  int p3=fork();   

  if (p3==0)
    {
      int  f3=open(argv[4],O_WRONLY|O_CREAT|O_TRUNC,0666);
      close(fd[1]);
      dup2(fd[0],0);
      close(fd[0]);
      dup2(f3,1);
      close(f3);
      execlp(argv[3],argv[3],NULL);
    }
   else 
     {
       wait(NULL);
     }
  return 0;
}
проги pr1,pr2,pr3 инкрементируют значение переменной p(+1)

в консоле ввожу ./pr4 ./pr1 ./pr2 ./pr3 "f1"
ввожу :0
выводит: p=2
а должно 3 выводить, что исправить в программе, сделать 2 fd[2]?
MariaD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
pipe,конвеер[c] MariaD Помощь студентам 0 14.12.2014 21:27
pipe sukharef Общие вопросы C/C++ 4 21.06.2013 13:13
Pipe,завершение приложения Скарам Помощь студентам 3 31.03.2010 12:56
использование named Pipe Sparky Общие вопросы .NET 1 29.03.2010 17:54
Создание Pipe на C# (CreateFile) WinApi Помощь студентам 0 23.12.2009 08:07