IPC между процессами с ShellExecute - PullRequest
10 голосов
/ 23 января 2012

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

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

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

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

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

1 Ответ

2 голосов
/ 23 января 2012

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

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

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

...