C++ cgi использует CreateProcess с DETACHED_PROCESS. Процесс начинается. Нет консольного окна. Тот же код в VS 2022 рабоC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 C++ cgi использует CreateProcess с DETACHED_PROCESS. Процесс начинается. Нет консольного окна. Тот же код в VS 2022 рабо

Сообщение Anonymous »

У меня есть программа на C++, которая работает под управлением Apache24 cgi-bin в Windows 11. Пока проблем нет.
Я хочу, чтобы эта программа либо A) прикреплялась к существующему именованному сопоставленному файлу для отправки данных в ранее запущенное консольное приложение или B) запустите консольное приложение (с DETACHED_PROCESS), а затем сопоставьте с файлом только что созданный процесс. События и мьютексы синхронизируют все.
Сопоставленный файл используется для передачи сложных сообщений туда и обратно.
Проблема в том, что когда программа C++ создает процесс работает под Apache24, созданный процесс не имеет консольного окна. Когда тот же код выполняется в режиме отладки из Visual Studio 2022, он работает нормально и имеет окно консоли.
Созданный процесс начинается со следующего:

Код: Выделить всё

    bool console_created = AllocConsole();
if (console_created) {
FILE* fpstdin = stdin, * fpstdout = stdout, * fpstderr = stderr;

freopen_s(&fpstdin, "CONIN$", "r", stdin);
freopen_s(&fpstdout, "CONOUT$", "w", stdout);
freopen_s(&fpstderr, "CONOUT$", "w", stderr);
}
Итак, суть моего вопроса в том, почему он работает под VS, а не под Apache?
Я не знаю, насколько мне известно. заголовок того, что Apache использует для учетной записи. VS работает под моей учетной записью пользователя рабочего стола.
Под Apache процесс запускается, но ожидаемого результата от AllocConsole + freopen() не происходит. Кроме того, если отсоединенный процесс уже запущен через VS, программа cgi не видит указанный сопоставленный файл и запускает второй экземпляр отсоединенного процесса.
Я довольно дотошен. о проверке статуса возврата от каждого вызова и все утверждает, что все в порядке.
Отладка программы, работающей под Apache, по меньшей мере, утомительна. Я создал файл журнала процесса запуска, но он не дал никакой полезной информации.

Подробнее здесь: https://stackoverflow.com/questions/784 ... ole-window
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»