Добавил:
Fragga
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:лабораторки по ОС препод Челноков / 2семестр / wi1 / boris / lab2 / lb2
.c#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);
}}}