我不知道这段代码有什么问题。这是linux机器上的C语言。
它应该做的是杀死我创建的所有子进程,等待all退出,然后为每个子进程打印一行,其中包含pid、进程号(我创建)和信号号(应该是9,表示已被杀死)。
那么我到底做错了什么呢?
void onalarm(int signo) {
int status[numberOfCores];
printf("Recieved alarm signal\n");
int cpu;
for (cpu = 0; cpu < numberOfCores; cpu++) {
kill(child_pid[cpu], SIGKILL);
}
for (cpu=0;cpu <numberOfCores;cpu++){
waitpid(-1, &status[numberOfCores],0);
}
for (cpu=0;cpu < numberOfCores;cpu++){
printf("pid = %i %ith child killed with signal ",child_pid[cpu],cpu);
printf("%i %s\n", WTERMSIG(status[cpu]), strsignal(WTERMSIG(status[cpu])));
}
exit(0);发布于 2014-05-07 10:46:42
我知道我的问题出在哪里了。
for (cpu=0;cpu <numberOfCores;cpu++){
waitpid(-1, &status[numberOfCores],0);应该是的。
for (cpu=0;cpu <numberOfCores;cpu++){
waitpid(-1, &status[cpu],0);让它正常工作知道。谢谢你帮我思考。
https://stackoverflow.com/questions/23507756
复制相似问题