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.