在C中处理SIGCHLD时的非法硬件指令

时间:2018-05-10 13:58:05

标签: c macos signals signal-processing

我必须编写一个C程序来创建10个子进程,每个进程在创建时都会写入一条消息。当其中一个Childs终止时,Parent也应该打印一条消息。

#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上我收到了非法的硬件指令错误。Error Message

0 个答案:

没有答案