Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
5
Добавлен:
26.05.2014
Размер:
1.13 Кб
Скачать
#include <sys/wait.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
main()
{
 pid_t pid1,pid2;
 int fd1,fd2;
 int fd[2];
 int in,out;
 char q[32];
 switch (pid1=fork())
	{
	case -1:
	perror ("fork 1 failed");
	exit(1);
	
	case 0:
	close(0);
	close(1);
	fd1=open("f.dat",O_RDONLY);
	fd2=open("f.res",O_TRUNC|O_CREAT|O_WRONLY);
	execl("/bin/cat","cat","-b",(char *)0);
	
	default:

	wait((int *)0);
	{
	 if fork()==0
		{
		execlp (ls,ls,wc,0);
		}
	}
	buf1 = dup(0);
	buf2 = dup(1);
	fd2=open("f.res",O_WRONLY|O_APPEND);
	in=dup(fd2);
	pipe(fd);
	out=fd[1];
	dup2(in,0)
////////////////////////////////////
	printf("pr 1 pico\n");
	pipe(fd);
	in = fd[0];
	out= fd[1];
	switch (pid2=fork())
	{
	case -1:
	perror ("fork 2 failed");
	exit(2);

	case 0:
	 printf("pr 2 dup 1\n");
	 close(1);
	 dup2(out,1);
	 execl("/bin/ls","ls",(char *)0);

	default:
	 wait((int *)0);
	 printf("pr 2 dup 2\n");
	 close(0);
	 
	 dup2(in,0);

	
	 read(0,q,32);
//	 printf("test ls:%s\n",q);

	 close(1);
	 fd2=open("f.res",O_WRONLY|O_APPEND);
//	 printf("test 2:\n%s",q);
	 execl("/bin/echo","echo",q,(char *)0);
}}}
Соседние файлы в папке lab2
  • #
    26.05.201412.08 Кб5a.out
  • #
    26.05.201421 б5f.dat
  • #
    26.05.201476 б5f.res
  • #
    26.05.2014924 б5l2.c
  • #
    26.05.2014783 б5lab2.c
  • #
    26.05.20141.13 Кб5lb2.c