ПОМОГИТЕ С ПРОГРАММОЙ.
Форум — 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);
}