Interprozess Callbacks

Design Patterns, Erklärungen zu Algorithmen, Optimierung, Softwarearchitektur
Forumsregeln
Wenn das Problem mit einer Programmiersprache direkt zusammenhängt, bitte HIER posten.
Antworten
Bergmon
Beiträge: 46
Registriert: 03.05.2003, 16:39
Kontaktdaten:

Interprozess Callbacks

Beitrag von Bergmon »

Hallo,

unter Windows fällt da einem das Message-Interface der UI ein. Da ist es meines Wissens nach möglich eine Funktion eines Prozesses an eine Nachricht zu koppeln, welche auch von einem anderen Prozess verschickt werden konnte.
Doch gibt es ähnliche Methoden im Betriebssystem(Windows, aber auch andere), welche nicht an eine UI oder ähnliches koppeln?

Ich möchte eine Kommunikation zwischen zwei getrennten Prozessen auf einem Computer herstellen, wobei mindestens einer der beiden Prozesse Funktionen des anderen Prozesses aufrufen kann.

Wäre es zum Beispiel möglich auf einen Schreibbefehl auf eine Pipe zureagieren? Das heißt der eine Prozess muss dann minimal nur eine Konstante übermitteln und der andere Prozess reagiert nur, wenn ein Schreibbefehl aufgetaucht ist.

Viele Grüße
Bergmon
Bergmon
Beiträge: 46
Registriert: 03.05.2003, 16:39
Kontaktdaten:

Re: Interprozess Callbacks

Beitrag von Bergmon »

Ok, das war nicht so schwer. MSDN ist dein Freund. Für jemanden, den es interessiert:
Multithreaded Pipe-Server: http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Pipe-Client: http://msdn.microsoft.com/en-us/library ... 85%29.aspx

Bei CreateNamedPipe ist das Wichtige der PIPE_WAIT Flag. Callbacks funktionieren dann wohl mit ReadFileEx, was ich allerdings noch nicht ausprobiert habe.

Dann wäre noch interessant, wie Pipes in Verbindung mit Netzwerken funktionieren(ist dann der Name der NamedPipe die Netzwerkaddresse?) und die Umsetzung mit der C-Bibliothek.
Helmut
Establishment
Beiträge: 237
Registriert: 11.07.2002, 15:49
Wohnort: Bonn
Kontaktdaten:

Re: Interprozess Callbacks

Beitrag von Helmut »

Also wenn das auch übers Netzwerk funktionieren soll kannst du doch gleich Sockets nehmen. Dann bleibt es portabel. Ansonsten ist es unter Windows auch üblich versteckte Fenster zu erstellen, über die man dann Nachrichten empfangen und verschicken kann. Das ist vielleicht leichter als mit den Pipes.
Probier mal for(int i = 0; ; i++)ShowWindow((HWND)i, SW_SHOW); du wirst dich wundert ;) (aber vorher alles sichern)

Ciao
Bergmon
Beiträge: 46
Registriert: 03.05.2003, 16:39
Kontaktdaten:

Re: Interprozess Callbacks

Beitrag von Bergmon »

Helmut hat geschrieben: Probier mal for(int i = 0; ; i++)ShowWindow((HWND)i, SW_SHOW); du wirst dich wundert ;) (aber vorher alles sichern)
ha, lustig. da steckt wohl programmiererfaulheit dahinter ;)?

das mit den sockets hab ich auch schon überlegt. ich hab halt erstmal was für die nahfeld-kommunikation - sprich auf einem rechner innerhalb eines betriebsystemes - gesucht. da vielen mir dann die pipes ein. doch als ich in der msdn gesucht hab, stand auch was von routing auf andere rechner(ich nenn es mal fernfeld) und es ist so wie es sein soll, das pipes sockets oder änhliches beinhalten:
Named pipes can be used to provide communication between processes on the same computer or between processes on different computers across a network. If the server service is running, all named pipes are accessible remotely. If you intend to use a named pipe locally only, deny access to NT AUTHORITY\NETWORK or switch to local RPC.
der server ist dann vermutlich die ip-addresse. ob es dann zwischen verschiedenen os funktioniert weiß ich nicht. ich werds mal mit dem localhost ausprobieren, dann weiß ich ob es mit der ip-addresse funktioniert.

wäre halt schön, wenn man dem pipe-filesystem ein protokoll für die fernfeld-kommunikation übergeben könnte, natürlich auch für das nahfeld(z.b. für verschlüsselung). das funktioniert auf jeden fall mit RPC, nur auch mit pipes?
Antworten