Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
5
Добавлен:
26.05.2014
Размер:
1.07 Кб
Скачать
#include <sys/wait.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>

char *arg[]={"ls","wc","f.res"};

void StartExec( char* name)
{
  if( fork() == 0 )
  {
     execlp( name, name, 0 );
  }
}

void StartAll( int argc, char* argv[] )
{
  int i, fd[2], in,f_des, out;
  int buf1, buf2;
  in = dup(0);
  buf1 = dup(0);
  buf2 = dup(1);
  for( i = 0; i < argc - 2; i++ )
  {
    pipe( fd );
    out = fd[1];
    dup2(in,0);
    dup2(out,1);
	close(in);
	close(out);
    StartExec( argv[i]);
    in = fd[0];
  }
	dup2(in,0);
	close(1);
//	f_des=open(argv[i+1],O_WRONLY|O_APPEND,0777);
	f_des=open(argv[i+1],O_WRONLY|O_CREAT|O_TRUNC,0666);
	StartExec(argv[i]);
	dup2(buf2,1);
	dup2(buf1,0);
}

main()
{
 int narg=3;
 pid_t pid1,pid2;
 int fd1,fd2;
 
 switch (pid1=fork())
	{	
	case 0:
	close(0);
//	close(1);
	fd1=open("f.dat",O_RDONLY);
//	fd2=open("f.res",O_WRONLY|O_CREAT|O_TRUNC,0666);
	execl("/bin/cat","cat","-b",(char *)0);
//-----------------------------	
	default:
	wait((int *)0);
	StartAll(narg,arg);
	}
}
Соседние файлы в папке pip
  • #
    26.05.201411.91 Кб6a.out
  • #
    26.05.201421 б5f.dat
  • #
    26.05.201424 б5f.res
  • #
    26.05.2014908 б5l2.c
  • #
    26.05.20141.07 Кб5lb2.c
  • #
    26.05.2014513 б6pip.c
  • #
    26.05.2014567 б5pip2.c