windows - Windows上的子进程问题
问题描述
我在 Windows 上遇到了一个非常奇怪的问题,我需要有关根本原因的指针以进一步调试它。
语言为 C/C++,涉及的 API 为 CreateProcess。
我有一个启动“子”进程的“父”进程。我无法控制的子进程将使用 pthread 通过 TCP 套接字连接到父进程。孩子还链接了一些外部专有库,这似乎是该问题的触发因素。
在给定的时间,套接字关闭并且线程优雅地终止。子进程此时并没有结束,而是循环回来并可以根据请求再次连接。
这两个进程都是命令行进程,它们根本不创建窗口,只是普通的黑色控制台窗口。
我开发了“父”流程,所以我正在查看我在那里做错了什么!
好吧,如果孩子是从专用 cmd 手动启动的,那么一切正常。
如果子进程是从父进程启动的,则会出现问题。套接字在子端关闭,而父端看不到关闭的套接字。这会导致孩子尝试重新连接并被拒绝(由于内部逻辑,父母认为孩子仍然连接并拒绝)。
令我困惑的是,如果直接从控制台运行 child,一切正常。但是,如果子进程由父进程内部的 CreateProcess 运行,那么一切都会崩溃。
为了解决这个问题,我应该对父母进行什么检查?
解决方案
推荐阅读
- docker - 使用无服务器和 DynamoDB 对 Flask REST API 进行 Dockerize
- yarnpkg - 如何判断项目是否使用 Yarn
- python - 基于两列Python对List的数字字符串值进行排序
- c++ - 为什么我的代码没有读入我的输入值?
- javascript - 如何在 contentEditable div 中获取插入符号 x 和 y 位置
- scala - 如何将微风densevector转换为seq或array
- r - ggplot2 - geom_line - 绘制没有缺失值的时间序列
- python - 在 Python 中有没有办法找到具有特定属性的对象?
- elasticsearch - 在 Elasticsearch 中按字段的部分分组
- python - PySDL2 位图字体