Windows 上的子进程问题

问题描述

我在 Windows 上遇到了一个非常奇怪的问题,我需要进一步调试它的根本原因的指针。

语言为C/C++,涉及的API为CreateProcess。

我有一个启动“子”进程的“父”进程。我无法控制的子进程将使用 pthread 将 TCP 套接字连接到父进程。孩子还链接了一些外部专有库,这似乎是问题的触发因素。

在给定的时间,套接关闭,线程优雅地终止。子进程此时并未结束,而是循环返回并可以根据请求再次连接。

两个进程都是命令行进程,它们根本不创建窗口,只是普通的黑色控制台窗口。

我开发了“父”流程,所以我正在查看我在那里做错了什么!

好吧,如果从专用的 cmd 手动启动子项,则一切正常。

如果子进程是从父进程启动的,则会出现问题。 套接字在子端关闭,而父端看不到关闭套接字。这会导致孩子尝试重新连接并被拒绝(由于内部逻辑,父母认为孩子仍然连接并拒绝)。

令我困惑的是,如果直接从控制台运行 child,一切正常。但是,如果子进程由父进程内部的 CreateProcess 运行,那么一切都会崩溃。

我应该检查父母的什么来解决这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)