微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Windows 上的子进程问题

如何解决Windows 上的子进程问题

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

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

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

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

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

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。