процесс A запускает B и ждет вечно, когда B терпит неудачу ???дизайн ipc нужен! - PullRequest
0 голосов
/ 06 февраля 2011

У меня следующая проблема: у меня есть два процесса A, который запускает процесс B, и мне приходится ждать пока процесс B не вернет некоторую информацию, необходимую для дальнейшей работы процесса A. проблема что процесс B может дать сбой и прервать свою работу, процесс A не знает об этом и продолжает ждать!

в этом случае, каков идеальный способ связи, и как бы вы убедились, что процесс A знает, если процесс B все еще работает или нет (без сторожевого таймера)?

для межпроцессного взаимодействия я рассматривал именованные каналы, сокеты и просто файл на диске как информационный процесс B предоставляет процесс A, может быть сохранен в тексте.

есть идеи для этого?

Ответы [ 2 ]

2 голосов
/ 06 февраля 2011

Позвольте B создать Mutex при запуске и заблокировать его. Затем сделайте A ожидание с помощью API WaitForSingleObject. Mutex автоматически уничтожается, когда завершается процесс его владельца, но вы можете освободить его раньше, если захотите (например, B может освободить мьютекс, чтобы уведомить A о том, что он готов, в то время как ему еще предстоит выполнить некоторую очистку. не позволяйте А ждать излишне долго.)

Вы также можете указать тайм-аут, если хотите, так что вы можете дать B максимальное время для выполнения, прежде чем A. перестанет ждать.

1 голос
/ 27 февраля 2011
...