Innerhalb eines Programmes in stdin schreiben
-
Hallo,
Ich möchte innerhalb eines c Konsolenprogrammes in den stdin Stream schreiben.
folgender Code funktioniert leider nicht:
fprintf( stdin, "STRING" );Ich habe schon den MSDN Artikel mit dem Child Process gesehen.
Einen Child Process möchte ich eigentlich nicht extra erzeugen.
Gibt es keine einfachere Möglickeit?
-
stdin ist ein Stream zum Lesen, und nicht zum Schreiben.
Ich denke, dass was du suchst ist stdout.
-
Genügt es Dir mit freopen stdin einer anderen Datei zuzuornden, die dann gelesen wird? Evtl. geht das...
-
-
Hallo,
Erstmal Entschuldigung für die späte Antwort. Ich war leider andersweitig beschäftigt...
Der Hintergrund meiner Frage ist folgender: Ich portiere ein Linux Projekt das aus mehreren Kommandozeilenprogrammen besteht. Der Datenaustausch zwischen den Programmen findet über Pipes statt.
Ich möchte nun ein WIN Programm schreiben, das mehrere dieser Linux Programme beinhaltet : "PARAM PARAM2 ; " | PROGRAM1 | PROGRAM2Falls ich nun einen schreibenden Zugriff auf stdin hätte wäre der Aufwand recht gering. CreateProcess() und stdin,stdout umlenken scheint keine simple Angelegenheit zu sein. Laut diverser Foren sind daran auch schon einige Leute gescheitert.
-----------------------------------------------------------
"freopen" hat "funktioniert" ; das heisst es hat kompiliert und ist fehlerlos durchgelaufen. Der gewünschte Output wurde nicht zurückgeliefert!
Anmerkung: Linux kennt keinen File IO TEXT Modus. Daher habe ich die Systemvariable _fmode = _O_BINARY; definiert. "freopen" hat aber nur im Textmodus "funktioniert". -Möglicherweise der Grundzwei links zu freopen:
http://groups.google.com/group/comp.lang.c.moderated/browse_thread/thread/d3d0ae3d10756e86/61e15267ab32fa72http://blogs.msdn.com/ronpih/archive/2004/09/29/235903.aspx
------------------------------------------------------------------Im Moment benutze ich einfach den Umweg über files auf der HD:
stdin_filep = fopen( "./resources/concept_def.txt", "r");
stdin = stdin_filep;Das ist natürlich nicht gerade performant und elegant.
Gibt es eine Möglichkeit FILE* im Speicher anzulegen?
Oder eigene Streams zu definieren?
Grüße,
Gerd