Добавил:
Fragga
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:лабораторки по ОС препод Челноков / 2семестр / wi2 / lab3 / l
.c#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <fcntl.h>
static int num = 0;
static int ctrl_c(int);
int count = 0;
int main(int argc,char *argv[])
{
char c;
char st[8];
int f_in;
int f_out;
signal(SIGINT,(void *)&ctrl_c);
printf("searching for %s in %s\n",argv[1],argv[2]);
f_in=open(argv[2],O_RDONLY);
f_out=open("rezults.txt",O_WRONLY | O_CREAT | O_TRUNC ,0666);
c=*argv[1];
while (read(f_in,st,1)>0)
{
sleep(1);
if (st[0]==c)
{
//printf("%c sovpadaet s %c\n",st[0],c);
write(f_out,st,1);
read(f_in,st,7);
write(f_out,st,7);
count++;
}
//printf("%c ne sovpadaet s %c\n",st[0],c);
}
printf("finished\nfound %d\n",count);
close(f_in);
close(f_out);
return 0;
}
static int ctrl_c(int sig)
{
signal(SIGINT,(void *)&ctrl_c);
if (++num<3)
{printf("\nfound %d\n",count);}
else
{
printf("\nfound %d\n",count);
printf("\n\nSoderzimoe faila rezultata:\n");
execl("/bin/cat","cat","rezults.txt",NULL);
}
}