Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
7
Добавлен:
26.05.2014
Размер:
1.35 Кб
Скачать
#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