LINUX.ORG.RU

Сообщения zenum

 

ПОМОГИТЕ С ПРОГРАММОЙ.

Форум — Development

ВОТ ЗАДАНИЕ. Процесс 1 открывает файл и порождает потомка 2, после этого пишет в файл N байт и посылает сигнал процессу 2. Процесс 2 пишет N байт в файл, посылает сигнал процессу 1 и завершается. Процесс 1, получив сигнал, считывает данные из файла, выводит их на экран и завершается. (ЫСЕ ДЕЛАЕТСЯ С ПОМОЩЬЮ СИС. ВЫЗОВОВ)

ВОТ КАК Я ЕЕ ПОПЫТАЛСЯ НАПИСАТЬ.НУ ЧТО ТО У МЕНЯ НЕ ТО.

#include <stdio.h> 
#include <signal.h>
#include <wait.h>
#include <sys/types.h> 
#include <fcntl.h>
#include <sys/stat.h> 
#include <unistd.h> 
#define ERR(...)    {fprintf(stderr, __VA_ARGS__); exit(1);}
int ppid,pid,i;
int f_in;
unsigned char inp, outp, pass; 
void sigper(int n){
   signal(SIGUSR1,sigper);
   printf("KOL-VO BYTE: %d\n", pass); 
   write(f_in,"1",1);
   kill(pid,SIGUSR1);
}
void sigchail(int n){
   signal(SIGUSR1,sigchail);
   write(f_in,"2",1);
   kill(ppid,SIGCHLD);
}    
int main(int argc, char*argv[]){  
   ppid=getpid(); 
   if((f_in = open(argv[1],O_RDONLY))<0) 
      ERR("Can't open %s\n", argv[1]); 
   i = atoi(argv[2]);
   pass = (unsigned char) i;
   if (pid=fork()<0){
      ERR("Can't fork");
   }else if(pid>0){
      signal(SIGUSR1,sigper);
      kill(pid,SIGUSR1);
   }else{
      pause();
      signal(SIGUSR1,sigchail);
      exit(-1);
   }
   read(1,&inp,1);
   putchar(inp);
   close(f_in);
   printf("1");
   return(0);
}  
ЗАРАНЕЕ СПАСИБО.

zenum
()

Не получается написать прогу

Форум — Development

Задание
7.   Написать программу кодировки входного файла на основании кодового слова с возможностью декодирования (алгоритм сложения по модулю два).

Сама прога:

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>

int main(int argc, char*argv[])
{
	int n,f1,f2;
    	char szName;
    	int szPassword;
    	char i,s,szResult;
	if ((f1 = open(argv[1],O_RDONLY))<0)
	{
		printf("File not found\n");
		exit(1);
	}
	if ((f2 = open(argv[2],O_WRONLY | O_CREAT,0644))<0)
	{
            	printf("File not found\n");
	    	exit(1);
	}

	i=atoi(argv[3]);
	while (read(f1,&szName,1)>0)
   	{ 	
		
       		szResult = i ^ szName;
        	write(f2,&szResult,1);
	}
        
	lseek(f2, 0,  SEEK_END);

	 	while (read(f2,&szName,1)>0)
   	{ 	
		
       		szResult = i ^ szName;
        	write(f2,&szResult,1);
	}
	
	close(f1);
	close(f2);
	return(0);
}
Заранее спасибо.

zenum
()

RSS подписка на новые темы