LINUX.ORG.RU

А можно сделать так чтобы родителю не приходилось заботится о своих потомках(определённых)


0

0

Тоесть мне нужно так запустить потомка чтобы в родителе небыло необходимости вызывать wait() после fork() А также чтобы после завершения потомка(определённого) родителю _не посылался_ SIG_CHLD????

★★★★★

2cvv:

Скажи signal (SIGCHLD, SIG_IGN);

под Линухом проканает, но могут быть нюансы. Например, из man getrusage:

On Linux, if the disposition of SIGCHLD is set to SIG_IGN then the resource usages of child processes are automati╜ cally included in the value returned by RUSAGE_CHILDREN, although POSIX 1003.1-2001 explicitly prohibits this.

Кстати, а зачем?

Поставь wait в обработчике SIGCHLD

Die-Hard ★★★★★
()
Ответ на: комментарий от cvv

cvv:

> Мне как раз SIGCHLD с его обработчиком мешают

Есть мысль, что не мешают, посмотри на мое последнее сообщение в "А что будет если во время вызова fgets возникнет ситуация EINTR???"

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

ИМХО, еще можно сделать двойной форк:

if((pid = fork()) == 0) {
  if((pid = fork()) == 0) {

    // do all the stuff here

  } else(pid < 0) {
    ...
  } else {
    _exit(0);
  }   
} else(pid < 0) {
  ...
} else {
  waitpid(pid, ...);
  ...
}

В этом случае внук отойдет на попечение init.

jek_
()
Ответ на: комментарий от jek_

Вот так я собственно и сделал только вместо второго форка вызвал daemon

cvv ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.