在没有 valgrind 抱怨的情况下不干净地退出 C 子进程?

Uncleanly exiting from C child process without valgrind complaining?

我有一个包含一个主进程的 C 程序。

偶尔fork()用于创建并行子进程。这些只存在几秒钟。

我的主进程顺利退出,取消分配所有 malloc() 的内存。

我希望子进程在不取消分配所有(父进程的)malloc() 内存的情况下死掉,因为我没有让他们这样做的干净方法。

但是,每次子进程 exit(0)s 时,Valgrind 都会大声抱怨。

我正在使用命令:

valgrind --leak-check=yes --leak-check=full --show-leak-kinds=all --trace-children=no ./my_program

我试过了--trace-children=no。 (它应该是默认的,但 Valgrind 总是跟踪子进程。)

有什么我可以在代码中或使用开关来使 Valgrind 在子进程上不 运行 吗?

事实证明,--trace-children=no 仅适用于 fork() 后跟 exec()

我需要的是:--child-silent-after-fork=yes.