#windows #createprocess
Вопрос:
Я испытываю очень странную проблему в Windows, мне нужны указатели на то, что может быть основной причиной, чтобы продолжить ее отладку.
Язык-C/C , задействованный API-это CreateProcess.
У меня есть «родительский» процесс, который запускает «дочерний» процесс. Дочерний процесс, над которым я не имею никакого контроля, будет использовать поток pthread для подключения с помощью TCP — сокетов к родительскому процессу. Ребенок также связывает некоторые внешние проприетарные библиотеки, что, по-видимому, является причиной проблемы.
В определенный момент времени сокет закрывается, и поток завершается изящно. Дочерний процесс не завершается на этом этапе, но возвращается и может подключиться снова по запросу.
Оба процесса являются процессами командной строки, они вообще не создают окон, просто обычное черное окно консоли.
Я разрабатываю «родительский» процесс, поэтому я смотрю, что я там делаю не так!
Ну, если ребенок запускается вручную из выделенного cmd, все работает просто отлично.
Если вместо этого дочерний процесс запускается из родительского, что-то ломается. Розетки закрыты на дочерней стороне, в то время как родительская сторона не видит закрытых розеток. Это приводит к тому, что ребенок пытается подключиться снова и получает отказ (родитель думает, что ребенок ВСЕ еще подключен и отказывается из-за внутренней логики).
Что меня озадачивает, так это то, что если запустить ребенка прямо с консоли, все работает просто отлично. Но если ребенок управляется процессом создания внутри родителя, весь ад вырвется на свободу.
Что я должен проверить у родителя, чтобы решить эту проблему?
Комментарии:
1. Чтобы уточнить; объем задействованного кода огромен, в данный момент я не могу публиковать его, пока не найду способ уменьшить масштаб проблемы…