gdb调用waitpid提示未知返回类型,如何正确cast清理僵尸进程
解决方案
直接使用如下gdb命令即可:
call (pid_t)waitpid(44, 0, 0)
如果执行后仍提示类型未定义,可替换为兼容写法(Debian 11中pid_t本质是int的别名,效果完全一致):
call (int)waitpid(44, 0, 0)
补充说明
- 命令执行完成后僵尸进程就会被父进程回收,无需关注返回值
- 操作完成后执行
detach命令退出gdb即可,父进程会保持正常运行不受影响 - 如果需要批量清理父进程下的所有僵尸进程,可以使用如下命令,非阻塞回收所有已终止的子进程:
其中参数call (int)waitpid(-1, 0, 1)1对应WNOHANG常量,避免调用阻塞父进程。
内容的提问来源于stack exchange,提问作者danielbene
相关产品推荐
相关产品推荐

