LINUX.ORG.RU

Сообщения liberty

 

[c++]Завершение процесса

Процесс создаёт дочерний процесс. Дочерний процесс должен игнорировать все сигналы кроме пользовательского(посылаемого родителем) по которому он должен закончится(использовать ф-ию 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(); }

 

liberty
()

[C++]-UNIX - sigprocmasc

Привет всем, я с проблемой такого плана :«Процесс создаёт дочерний процесс. Дочерний процесс должен игнорировать все сигналы кроме пользовательского(посылаемого родителем) по которому он должен закончится(использовать ф-ию sigprocmask)» Я не очень разбираюсь , но как понял нужна структура sigaction... не знаю как правильно её использовать да и sigprocmask--не понимаю зачем она здесь(видимо, дополнительное условие преподавателя) Большая просьба помогите с написанием программы. ОЧень большая просьба отпишитесь кому легко программирование даётся

<Опустим диррективы>

void catch_sig(int sig_num)

{signal(SIGUSR1,catch_sig) }

int main()

{pid_t ppid,pid; sigset_t mask;

//ещё перемменные и видимо структура нужна??//

pid=fork();

sigfillset(&mask);

sigdelset(&mask,SIGUSR1);

//здесь ,видимо нужно работать с fillset??//

 

liberty
()

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