Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
5
Добавлен:
26.05.2014
Размер:
1.92 Кб
Скачать
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
#include <fcntl.h>
static  int nsigs=0;
static  void s(int sig); 
int pid;
int i,k,j,d1,d2;
char buf1[10],buf2[10];
int fd1,fd2,fd3;
int choose(int from);
int main()
{
  signal(SIGINT,&s);
  fd1=open("f1.dat",O_RDONLY);
  fd2=open("f2.dat",O_RDONLY);
  fd3=open("f.dat",O_WRONLY);
  read(fd1,&buf1,10);
  d1=lseek(fd1,0,SEEK_CUR);
  read(fd2,&buf2,10);
  d2=lseek(fd2,0,SEEK_CUR);
  k=0;
  
  while(((d1%10)==0)&&((d2%10)==0))
  {
  i=0;
  while((buf1[i]==buf2[i])&&(i<10))
  i++;
  if (buf1[i]<buf2[i])
    {
     write(fd3,&buf1,10);
     k=choose(1);
     printf("TEST1"); 
    }
    else
    {
     write(fd3,&buf2,10);
     k=choose(2);
     printf("TEST2");
    }
  switch(k)
  { 
   case -1:{
          // read(fd2,&buf2,10);
           d2=lseek(fd2,0,SEEK_CUR);
	   while((d2%10)==0)
             {
             write(fd3,&buf2,10);
             read(fd2,&buf2,10);
             d2=lseek(fd2,0,SEEK_CUR);
             }
             }
   case -2:{
           // read(fd1,&buf1,10);
            d1=lseek(fd1,0,SEEK_CUR);
	    while((d1%10)==0)
             {
             write(fd3,&buf1,10);
             read(fd1,&buf1,10);
             d1=lseek(fd1,0,SEEK_CUR);
             }
           }
    case 1:;
    case 2:;
    default:;            
  }
}
  while(1)
    pause();
  return(0);
}

int choose(int from)
{
switch(from)
  { 
   case 1:
     {read(fd1,&buf1,10); 
      d1=lseek(fd1,0,SEEK_CUR);
      if((d1%10)==0)
      return(1);
      else
      return(-1);
     }
   case 2:
     {read(fd2,&buf2,10);
      d2=lseek(fd2,0,SEEK_CUR);
      if((d2%10)==0)
      return(2);
      else  
       return(-2);
     }
  }
}
void s(int sig)
{
 signal(SIGINT,&s);
if(nsigs!=0)
{
 if (nsigs==5)
 signal(SIGINT,SIG_DFL);
 else
 switch(pid=fork())
 {
   case 0:execlp("wc","wc","f.dat",0);
   default:;
 }
}
 nsigs=nsigs+1;
}


Соседние файлы в папке labi2
  • #
    26.05.201490 б5f.dat
  • #
    26.05.201443 б5f1.dat
  • #
    26.05.201454 б5f2.dat
  • #
    26.05.2014953 б5main.c
  • #
    26.05.2014208 б5t3.c.save
  • #
    26.05.20141.92 Кб5t31.c