|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
||||||||||||||||
Многкратное перенаправление ввода/вывода (CreatePipe)15.07.2021, 13:00. Показов 13268. Ответов 36
Мне нужно многократно перехватить ввод/вывод дочернего процесса code.exe, например, такого:
Но как добиться многократного перенаправления, чтобы не запускать многократно дочерний процесс? Чтобы один раз запустить code.exe и многократно передавать в него и читать данные. Как это сделать? Ведь просто поместить в цикл процесс записи/чтения не получится, так как пайпы закрываются уже в первой итерации:
Как быть? Подскажите, кто знает, или дайте ссылку где почитать об этом.
0
|
||||||||||||||||
| 15.07.2021, 13:00 | |
|
Ответы с готовыми решениями:
36
Перенаправление потока вывода Перенаправление вывода в другое окно Перенаправление вывода при запуске процесса |
|
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
|
||
| 15.07.2021, 18:28 | ||
|
1
|
||
|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
|
| 15.07.2021, 18:30 [ТС] | |
|
Хотя нет. Просто я перепутал с WCHAR для ModuleName[]
0
|
|
|
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
|
||
| 15.07.2021, 18:30 | ||
|
1
|
||
|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
|
| 15.07.2021, 18:34 [ТС] | |
|
0
|
|
|
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
|
|
| 15.07.2021, 18:37 | |
|
LVV, ну, дерзайте...
По программе вопросов нет?
1
|
|
|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
|
| 15.07.2021, 18:41 [ТС] | |
|
0
|
|
|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
||||||
| 16.07.2021, 18:43 [ТС] | ||||||
|
liv, я заметил странное поведение "примерчика".
Он умудряется дважды передать и прочитать данные в незацикленный дочерний модуль. Тоесть, ехе-шник code1.exe компилирую вот из такого кода:
Но по факту - передача/чтение происходит дважды. И лишь на третий раз: Time out! Мистика.
0
|
||||||
|
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
|
|
| 17.07.2021, 11:02 | |
|
LVV, не пробовал...
![]() Было сказано, code.exe не менять! ![]() Посмотрю в понедельник
1
|
|
|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
|
| 18.07.2021, 07:17 [ТС] | |
|
Пардон. Проблему решил. Виновата, как всегда моя невнимательность (дважды запускался процесс).
0
|
|
|
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
|
|
| 18.07.2021, 08:44 | |
|
LVV,
1
|
|
|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
||||||||||||||||
| 26.07.2021, 19:12 [ТС] | ||||||||||||||||
|
Неделю не могу справиться с проблемой.
Переделал пример, для ввода/чтения строковых данных.
то перенаправление потоков не срабатывает. Например, запускается база данных нормально:
Если передать неправильную команду, то считывается сообщение об ошибке и процесс (база данных) закрывается. Хотя при запуске MariaDB вручную те же команды можно вводить многократно и процесс (база данных) не закрывается. Заметил, что перехваченное сообщение об ошибке отличается от выведенного в режиме ручного ввода той же комады в командной строке базы данных (смотрите рисунок). Почему так? Подскажите, кто знает, хотя бы в каком направлении копать и с чем это может быть связвано: с неочищенным буфером обмена, с перехватом не того потока, с кодировкой символов... ???
0
|
||||||||||||||||
|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
|
| 26.07.2021, 19:18 [ТС] | |
|
Забыл вложить рисунок
0
|
|
|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
||||||
| 06.08.2021, 06:55 [ТС] | ||||||
|
Считывание данных из mysql.exe происходит нормально только при завершении дочернего процесса.
Если команда неправильная, то процесс (mysql.exe) закрывается аварийно по ошибке Got an error reading communication packets, после чего чтение данных ReadFile срабатвает (отвисает) и читается информация об ошибке. Если команда правильная, то ReadFile "виснет". Но при ри ручном закрытии дочернего процесса в момент зависания ReadFile, чтение срабатывает (отвисает) и в результате читается ответ на запрос к mysql.exe. Странно, что закрытия дочернего процесса не требуется, если это обычный зацикленный процесс, типа такого:
0
|
||||||
|
68 / 55 / 13
Регистрация: 26.07.2021
Сообщений: 191
|
||
| 06.08.2021, 10:37 | ||
|
1
|
||
|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
|
| 06.08.2021, 11:46 [ТС] | |
|
tiun, я как-то не задумывался над этим.
Думал, что \n\0 достаточно. Ведь без треда срабатывало нормально (правда, при закрытии концов pipe) Спасибо. Поработаю над этим. Может быть в этом вся причина зависаний...
0
|
|
|
68 / 55 / 13
Регистрация: 26.07.2021
Сообщений: 191
|
|||
| 06.08.2021, 11:58 | |||
|
Представьте, что Вы пишете программу, которая читает файл побайтно, сама его на строки разбирает и что-то с этими строчками делает. Что для неё будет признаком того, что "вот на этом байте строка закончилась и можно передавать её в работу"? Либо то, что после этого байта из файла прочитана последовательность, означающая по какому-то соглашению конец строки, либо то, что файл кончился. А закрытие канала - это и есть полный аналог достижения конца файла.
1
|
|||
|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
|
| 09.08.2021, 09:20 [ТС] | |
|
Проблема как-то непонятно исчезла.
![]() Всё вдруг заработало после переключений --binary-mode=1. --binary-mode=0. ![]() Правда, MySQL почему-то по-прежнему, аварийно завершает работу при любой ошибке...(Got an error reading communication packets)
0
|
|
| 09.08.2021, 09:20 | |
|
Помогаю со студенческими работами здесь
37
Перенаправление потока ввода в .exe файл Mailslot и перенаправление ввода/вывода c++ unix перенаправление консольного ввода\вывода
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|