首页 > 解决方案 > 在没有 valgrind 抱怨的情况下不干净地退出 C 子进程?

问题描述

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

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

我的主进程很好地退出,取消分配其所有malloc()'ed 内存。

我希望子进程在不取消分配所有(父级)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 不在子进程上运行?

标签: cforkvalgrind

解决方案


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

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


推荐阅读