2015-11-02 3 views
-1

Я использую именованные каналы в окнах (C++). Я смог отправить данные из одного несвязанного процесса в другой процесс. Но для этого я должен сначала запустить сервер. и используйте «CreateNamedPipe», прежде чем запускать клиент. Клиент подключается к серверу с помощью «CreateFile».Именованные каналы в Windows

Есть ли способ, которым я мог бы запустить клиент первым, прежде чем запускать сервер? (не пытаясь использовать «CreateFile» внутри цикла до его успешного завершения)

Спасибо.

+1

Нет. Конечно, нет. Нет именованной трубы, пока вы ее не создали. – EJP

+0

Вам не нужно использовать цикл. Просто создайте именованное событие, а также сообщите серверу о событии, когда труба будет готова. –

ответ

0

ИМО, это зависит от вашего прецедента. Мой ответ будет основан на случае, когда ваше программное обеспечение не требует, чтобы именованный канал работал. Например, скажем, программное обеспечение, использующее именованный канал для регистрации действий. Таким образом, мы можем понять, что ваше программное обеспечение может работать без регистрации.

Это должно быть возможно, если вы запустите свою программу, не требуя существования названного пункта. Затем, как только все будет загружено и функционально, у вас может быть подпрограмма, периодически проверяющая существование именованного канала (скажем, каждые 5 секунд, чтобы не перегружать ваш процессор), и после его создания вы начнете использовать его.

Примечание: он по-прежнему выглядит как бесконечный цикл, пока он не преуспеет, но я не вижу в этом ничего плохого, так как вы делаете это правильно, говорит, вы запускаете его с неблокирующим механизмом.

Примечание: не обязательно подразумевает методы многопроцессорности. Вы можете представить один основной цикл с периодической проверкой (не каждая итерация).

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