gpt4 book ai didi

C - 在被调用者中调用 SIGTERM 时停止方法

转载 作者:行者123 更新时间:2023-11-30 16:45:25 26 4
gpt4 key购买 nike

我有一个 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() 时没有被记录?

最佳答案

在 doheavystuff() 内部使用该标志,而不是在外部。

关于C - 在被调用者中调用 SIGTERM 时停止方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44103405/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com