2012-01-23 3 views
2

Я работаю в win32 api на C++. У меня есть родительский процесс, и я использую его для запуска новой программы через вызов ShellExecute.IPC между процессами с ShellExecute

Я хотел бы, чтобы дочерний процесс имел возможность поговорить с родительским процессом (связь должна идти только в одну сторону). Я думаю, что анонимный канал подходит для этого, и я нашел, как создать канал с помощью функции CreatePipe, но я не уверен, как передать канал дочернему процессу с помощью команды ShellExecute.

Может ли кто-нибудь указать подходящий учебник по этому вопросу? Или, если другая форма IPC работает лучше, чем трубы, пожалуйста, укажите мне в этом направлении.

В случае его необходимости, это то, что моя оболочка выполнения команды выглядит следующим образом:

ShellExecute(NULL, "open", "Argo\\argo.exe", NULL, NULL, 1); 

ответ

2

При прочих равных условиях, Windows «именованные каналы» может быть идеальный способ пойти:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa365590%28v=vs.85%29.aspx

Использование именованного канала полностью исключает необходимость передачи НИЧЕГО между родителем и дочерним: родительский открывает для чтения, ребенок открывается для записи, когда это необходимо, все синхронизируется без дополнительной работы.

+0

Да, используемый именованный, а не анонимный, делает тривиальным соединение для двух процессов. –

Смежные вопросы