“在调用进程镜像中没有由 atexit() 注册的函数在新进程镜像中注册”。
代码如下:
pid = fork();
if (pid == 0) {
atexit(check_mem);
return execv(...);
}
check_mem 函数在 execv() 之后未被调用。因为上面的“线”。在 execv 调用后获取函数注册的任何技巧??
在此先感谢您的帮助。
最佳答案
当您执行*某事时,atexit 处理程序将不会执行。
execv 替换当前进程镜像,包括您已注册的任何 atexit 处理程序,因此您实际上无能为力 - 您的代码已消失。
关于c - atexit() 处的 Execv 注册问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7778268/