libposix: drafted SIGCHLD management

This commit is contained in:
2017-05-23 00:27:50 +02:00
parent c27b2aa93b
commit e0610f6b71
7 changed files with 219 additions and 9 deletions

View File

@ -28,6 +28,25 @@ static int __libposix_wnohang;
#define __POSIX_SIGNAL_PREFIX_LEN (sizeof(__POSIX_SIGNAL_PREFIX)-1)
static int
fork_without_sigchld(int *errnop)
{
int pid = fork();
if(pid == 0)
__libposix_setup_new_process();
return pid;
}
int (*__libposix_fork)(int *errnop) = fork_without_sigchld;
void
__libposix_setup_new_process(void)
{
/* reset wait list for the child */
*__libposix_wait_list = nil;
}
void
__libposix_free_wait_list(void)
{
@ -110,13 +129,7 @@ POSIX_getppid(int *errnop)
int
POSIX_fork(int *errnop)
{
int pid = fork();
if(pid == 0){
/* reset wait list for the child */
*__libposix_wait_list = nil;
}
return pid;
return __libposix_fork(errnop);
}
int