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
Interprozess Callbacks
Forumsregeln
Wenn das Problem mit einer Programmiersprache direkt zusammenhängt, bitte HIER posten.
Wenn das Problem mit einer Programmiersprache direkt zusammenhängt, bitte HIER posten.
Re: Interprozess Callbacks
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.
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.
Re: Interprozess Callbacks
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
Probier mal for(int i = 0; ; i++)ShowWindow((HWND)i, SW_SHOW); du wirst dich wundert ;) (aber vorher alles sichern)
Ciao
Re: Interprozess Callbacks
ha, lustig. da steckt wohl programmiererfaulheit dahinter ;)?Helmut hat geschrieben: Probier mal for(int i = 0; ; i++)ShowWindow((HWND)i, SW_SHOW); du wirst dich wundert ;) (aber vorher alles sichern)
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:
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.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.
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?