2011-01-05 17 views
0

Ich schreibe ein Bash-Programm, das IPC zwischen zwei Prozessen (A und B) über Named Pipes hat. Ich mache mir Sorgen, denn wenn A abstürzt, kann B auf unbestimmte Zeit blockiert werden (und umgekehrt), weil Named Pipes blockieren. Kann ich A und B so verbinden, wenn A abstürzt, B auch zum Absturz zwingen? Alle anderen Alternativen zur Lösung dieses Blockierungsproblems wären willkommen.Wie kann ich zwei Prozesse verknüpfen, wenn einer abstürzt, den anderen auch zum Absturz bringt?

Vielen Dank im Voraus.

+0

Warum nicht Kommunikation im separaten Thread laufen lassen und es töten, wenn es für eine lange Zeit blockiert wird? –

Antwort

0

Sie können einen weiteren Prozess „C“ benötigen, die die Aktivität des Prozesses „A“ überwacht und Verfahren „B“

+0

Sie meinen einen Prozess, der die PID von A und B hat und regelmäßig überprüft? –

0

Wenn Sie über einen Bash-Skript sprechen? Wenn ja, könnten Sie das an A gesendete Signal abfangen, um es zu töten, und dann ein Signal an B senden, so dass es beendet wird.

Die relevanten Bash-Funktionen sind: trap und kill. Und die relevanten Signale wären SIGKILL, SIGINT, SIGHUP usw. Aufrufen: trap -l listet alle möglichen Signale auf.