我想从父母创建 N 个孩子。我希望所有的孩子同时开始(一个功能 - 测量时间)。所以我把函数放在一个信号处理程序中,当父级完成创建(fork)所有子级时,它会向所有子级发送信号(使用 kill(children_id))让 make 开始。代码如下,但它没有按预期工作。具体来说,它分叉了所有子节点,但根本不执行函数“measure_time”。这个函数的作用是记录执行时间并打印出来。如果我做错了什么,有人可以告诉我吗?
int n_task = 4;
for (i = 0; i < n_task; i++){
pid = fork();
if (pid < 0){
printf("cannot fork!\n");
} else
if (pid == 0){ //child
printf("printed from child [%d]\n", getpid());
signal(SIGUSR1, measure_time); //measure_time is a function
exit(0);
} else {
pid_array[i] = pid;
}
}
//This code is executed from parent only
for (int i = 0; i < n_task; i++)
{
kill(pid_array[i], SIGUSR1);
}