C - 在被调用方中调用SIGTERM时的Stop方法

时间:2017-05-22 01:28:31

标签: c fork

我在C中创建了一个子进程(在fork中创建),可以使用这样的while循环处理SIGTERM调用:

char* stuff = malloc(sizeof(char)*100);
if (fork()==0) {
    signal(SIGTERM, sig_handler) //Sets stopit to 1
    while(!stopit) {
        shared_mem = doheavystuff(stuff);
        break;
    }
    free(stuff);
    exit(0);
}

我的问题是,doheavystuff()被调用一次并且只在完成时停止,因此当stopit设置为1时,while循环不会结束。是否可以中断此方法的执行?我不关心它的进展,我只想清理并退出。

旁注:对我来说,感觉很奇怪,即使是没有得到SIGTERM的流程也似乎无法到达代码的free()部分。也许我做错了什么?也许他们在使用printf()时没有记录?

1 个答案:

答案 0 :(得分:0)

使用doheavystuff()内的标志,而不是在外面。