Einzelnen Beitrag anzeigen

Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#2

Re: Beliebiges Objekt mit Befehlszeile übergeben?

  Alt 24. Jan 2008, 07:50
Hrm.

Wenn Du von einem 'gemeinsamen' Speicherbereich redest willst Du also eigentlich Daten von einem anderen Programm in Deinem weiterverarbeiten?

Das ganze riecht mir in dem Fall stark nach IPC (Interprozesskommunikation), und hat mit der Kommandozeile in der Regel nicht sehr viel zu tun.

Aber hier mal eine Liste der Möglichkeiten, die mir spontan dazu einfallen:

1.) Straightforward und schon genannt: Daten in temporäre Datei schreiben, Dateinamen übergeben

2.) Auch Straightforward: Daten in XML serialisieren, Whitespaces entfernen und so die ganzen XML-Daten in einer Zeile an Dein Programm übergeben. Stellt sich die Frage, wie lang ein Parameter auf der Kommandozeile sein darf.

3.) Etwas, das unter Linux-Systemen sehr gängig ist: StdIn umleiten. Will heissen, die Daten werden in einer Textinterpretation (also auch wieder serialisiert) in die Standardeingabe Deines Programmes gepiped. Ist das gleiche wie wenn Du unter linux z.B. die Ausgabe von ps -aux an grep 'Prozessname' pipest.

4.) Gleicher Speicherbereich: Nennt sich Shared Memory. Allerdings ist es da recht tricky, dann auch die richtige Adresse zu bekommen, denn ggf. wird der Bereich an anderen Speicheradressen in die unterschiedlichen Prozesse gepiped. Man muss hier also z.B. am Anfang des SM Informationen über Offsets zum Beginn des Speichers ablegen.

5.) Named Pipes. Wenn der neue Prozess gestartet wurde kann dieser über einen benannten Kanal diese Daten z.B. selber anfordern. GGf. kann der Name der Pipe als 'Adresse' zu den richtigen Daten übergeben werden.

Das war so das was mir spontan vor meinem ersten Kaffee einfällt, was die Grundprinzipien angeht. Solange Du uns aber nicht noch etwas mehr Informationen lieferst ob die andere Software von Dir ist (IPC via Named Pipes und Shared Mem geht nur dann, wenn beide Kommunikationspartner diese Kommunikationsart implementieren) und was für Daten Du da von A nach B schaufeln musst wird Dir wohl keiner einen Hinweis auf eine möglichst gute Lösung geben können.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat