c - atexit() 处的 Execv 注册问题

标签 c linux exec atexit

“在调用进程镜像中没有由 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/

相关文章:

在没有实现的静态库中调用函数

linux - 相当于 Unix 中的命名管道,用于 LIFO/Stack 结构

Java process.start 如果父进程在启动后没有被销毁,速度会非常慢

c++ - 子进程在 fork 和 exec 后变为 Defunct

c - openssl RSA公钥与从C代码读取的 key 不匹配

c - 如何将目录从源树复制到二叉树?

c - C 中 Get_Next_Line 的无限循环

c++ std::thread 调用方法从对象原因到调用此类的析构函数

linux - 更改 git pull 上的 mtime

php 执行无限循环