Процесс создаёт дочерний процесс. Дочерний процесс должен игнорировать все сигналы кроме пользовательского(посылаемого родителем) по которому он должен закончится(использовать ф-ию sigprocmask) ВОПРОС КАК ЗАвершить процесс- мой решение не совсем соответсвует условию.
void main()
{ pid_t pid;
sigset_t x;
static struct sigaction act;
act.sa_handler=par_act;
sigfillset(&x);
sigdellset(SIGUSR1,&x);
sigprocmasc(SIG_BLOCK,&x,NULL);
switch(pid=fork())
case 1:perror(«ERROR»);
case 0:sigaction(SIGUSR1,&act,NULL);
default: sleep(5);
kill(pid,SIGUSR1);
printf(«Polzovatelskii signal otpravlen
do4ernemu,razblokirovka vseh signalov»);}
void par_act(int sig)
{ printf(«Do4ernii process razblokiruet vse signali»); sigprocmask(SIG_UNBLOCK,&x,NULL);
wait(); }