Существует программа, которая после инициализации ждет сигнала своего завершения (который другой процесс должен послать). Код:
sigset_t waitset;
int sig;
sigemptyset( &waitset );
sigaddset( &waitset, SIGTERM );
sigprocmask( SIG_BLOCK, &waitset, NULL );
sigwait( &waitset, &sig );
struct sigaction sigHandler;
memset( &sigHandler, 0, sizeof( sigHandler ) );
sigHandler.sa_handler = SigHandler;
sigemptyset(&sigHandler.sa_mask);
sigHandler.sa_flags = 0;
sigaction( SIGTERM, &sigHandler, 0 );
Во freebsd почему то возвращается sigwait с кодом ошибки 4 (No child processes). В линуксах все нормально, sigwait возвращается только когда родительский процесс посылает SIGTERM. В чем м.б. проблема?