Недопустимая инструкция по аппаратному обеспечению при обработке SIGCHLD в C - PullRequest
0 голосов
/ 10 мая 2018

Мне нужно написать программу на C, которая создает 10 дочерних процессов, каждый из которых пишет сообщение при создании.Также родитель должен напечатать сообщение, когда один из детей завершается.

#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>

void CHLDhandler(int);


int main(int argc, char const *argv[]){

  pid_t p;

  signal(SIGCHLD,&CHLDhandler);

  for(int i=0; i < 10; i++){
    p = fork();
    if ( p == (pid_t) 0 ) {
      /* child */

      signal(SIGCHLD, SIG_IGN);

      printf("Child number %d was born!\n",i);
      return 0;
    }
    else if ( p > (pid_t) 0 ) {
      /* parent */
    }
  }


}

void CHLDhandler(int sig){
  printf("Child finished\n");
}

Это мой код.В Linux он работает нормально, но в MacOS я получаю сообщение об ошибке Illegal Hardware Instruction. Сообщение об ошибке

...