Добавил:
Fragga
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:лабораторки по ОС препод Челноков / prog / copy
.c#include <fcntl.h>
#include <sys/types.h>
#include <signal.h>
#define bufsize 256
static int print_result(int);
int main(int argc, char *argv[])
{
static int counter=0;
int number=0;
if(argc<4){
printf("[infile] [outfile] [symbol]");
exit(0);
}
char buf[bufsize+1];
int fd = open(argv[1],O_RDWR | O_CREAT);
if (fd <0)
{
perror("open"); exit(2);
}
printf("[1]:file opened ok\n");
int nread = read(fd, buf, bufsize);
if (nread <0)
{
perror("read");exit(3);
}
printf("[2]:file read ok\n");
buf[nread]='\0';
char byte[7];
int i=0;
while(byte[7]!='\0')
{
byte[0]=buf[i];
byte[1]=buf[i+1];
byte[2]=buf[i+2];
byte[3]=buf[i+3];
byte[4]=buf[i+4];
byte[5]=buf[i+5];
byte[6]=buf[i+6];
byte[7]=buf[i+7];
char check;
i=i+8;
if(*argv[3]== *(byte +0))
{
int fd_out=open(argv[2],O_RDWR | O_CREAT);
if (fd_out <0)
{
perror("open"); exit(2);
}printf("open ok\n");
int nread_out = write(fd_out,byte ,sizeof(byte) );
if (nread_out <0)
{
perror("write");exit(3);
}printf("write ok\n");number++;close(fd_out);
}
if(counter<=2){
signal(SIGINT,&print_result);
counter++;
}else
if(counter>2) exit(0);
sleep(100);
}
exit(0);
}
static int print_result(int number)
{
signal(SIGINT,&print_result);
number=number-1;
printf("total:%d\n",number);
}
Соседние файлы в папке prog