In Lese-Puffer einer externen Anwendung schreiben?
-
Sorry,
mit datei habe ich natürlich Programm gemeint.
Noch ne Frage... funktioniert das NUR in der C++-Konsole oder auch in Anwendungen... zB.: Word||InternetExplorer||... also in ganz "normalen" Programmen?
-
Prinzipiell funktioniert es mit jedem Programm, dass von stdin liest und auf stdout schreibt.
BTW: Es gibt keine C++ Konsole
-
interpreter schrieb:
chille07 schrieb:
pipe2.exe | pipe1.exe
das ist aber (und das frage ich jetzt warum) nicht äquivalent mit
pipe1.exe | pipe2.exe
Weil im 2. Fall eben alle Ausgaben von pip1.exe der Eingabe von pipe2 zur Verfügung gestellt werden. Im 1. Fall bekommt pipe1 die Ausgaben von pipe2
Ja, Pipes sind unidirektional.
-
chille07 schrieb:
Noch ne Frage... funktioniert das NUR in der C++-Konsole oder auch in Anwendungen... zB.: Word||InternetExplorer||... also in ganz "normalen" Programmen?
Nein.
Word gibt nix auf die Standardausgabe aus und Internet Explorer lässt sich IMO auch nicht derart als Pager verwenden.
-
Deine Programme müssen nur von stdin lesen und nach stdout schreiben!
Ich habe jetzt f. gefunden:
cout<<"\nDies geht nach stdout"; cerr<<"\nFehlermeldungen gehen nach stderr"; clog<<"\noder sie gehen nach clog";
heisst das, das nur die Ausgaben von "cout" "übermittelt" werden?
-
chille07 schrieb:
cout<<"\nDies geht nach stdout"; cerr<<"\nFehlermeldungen gehen nach stderr"; clog<<"\noder sie gehen nach clog";
heisst das, das nur die Ausgaben von "cout" "übermittelt" werden?
Du kannst sowohl stderr als auch stdout umleiten, ich weiß aber nicht wie genau das unter Windows geht.
-
chille07 schrieb:
Deine Programme müssen nur von stdin lesen und nach stdout schreiben!
Ich habe jetzt f. gefunden:
cout<<"\nDies geht nach stdout"; cerr<<"\nFehlermeldungen gehen nach stderr"; clog<<"\noder sie gehen nach clog";
heisst das, das nur die Ausgaben von "cout" "übermittelt" werden?
ja, genau....
wenn du irgendwo
Programm1.exe | Programm2.exe
siehst, dann kannst du den | in Gedanken ersetzen durch "schreib meine Daten an"...
cout (und printf()) schreiben Standardmaessig immer an "stdout" ("Standardoutput"), und cin liesst von "stdin".... stdout und stdin kannst du dir als Betriebssystemfunktionen vorstellen, die den Output eines Programmes an einen bestimmten Ort leiten (im Falle von stdout) umgekehrt (im Falle von stdin). In normalen Konsolenprogrammen ist dieser "ORT" die Konsole.... Mit der Pipe sagst du jetzt "biege den stdout von Programm1 so um, dass er auf den selben Ort zeigt wie der stdin von Programm2...
Mit Word oder dem IE geht das nicht, die verwenden fuer I/O (input/output
) nicht STDOUT und STDIN. stdin und -out sind dafuer gedacht, reinen Text zu transportieren, fuer "grafische" Anwendungen sind die nicht vorgesehen (und werden dementsprechend auch nicht verwendet).
Ich hoff das war jetzt verstaendlich
@nman, interpreter:
ihr solltet eigentlich gerafft haben, dass der Threadersteller keine Erfahrung mit Linux, Shells oder Streams hat...
-
Blue-Tiger schrieb:
@nman, interpreter:
ihr solltet eigentlich gerafft haben, dass der Threadersteller keine Erfahrung mit Linux, Shells oder Streams hat...Dennoch waren unsere Ausführungen ziemlich deppensicher; Shells und Pipes gibts ja nicht nur unter Unix.
Wenn mir jemand Tips gibt die Fachbegriffe enthalten die ich nicht kenne dann versuche ich auf alle Fälle mal herauszufinden, was diese bedeuten.
Ein wenig Eigeninitiative von seiten der jeweiligen Fragesteller wäre schon wünschenswert, ich habe einfach keine Lust immer alles so vorzukauen wie du das gerade getan hast.
-
nman schrieb:
Blue-Tiger schrieb:
@nman, interpreter:
ihr solltet eigentlich gerafft haben, dass der Threadersteller keine Erfahrung mit Linux, Shells oder Streams hat...Dennoch waren unsere Ausführungen ziemlich deppensicher; Shells und Pipes gibts ja nicht nur unter Unix.
Wenn mir jemand Tips gibt die Fachbegriffe enthalten die ich nicht kenne dann versuche ich auf alle Fälle mal herauszufinden, was diese bedeuten.
Ein wenig Eigeninitiative von seiten der jeweiligen Fragesteller wäre schon wünschenswert, ich habe einfach keine Lust immer alles so vorzukauen wie du das gerade getan hast.Ok, hast ja recht...
nur hing der Threadersteller nach 2 Seiten voller "Leite stdout von P1 ueber eine Pipe um, und P2 kann dann normal ueber stdin lesen" immer noch ziemlich in der Luft, da kann man ruhig expliziter werden (entweder indem man ihm mehr erklaert oder explizit auf google verweisst)
EDIT: denn nicht jeder hat schonmal intensiver DOS oder Linux/Unix verwendet und ist mit dem Shell-Konzept vertraut
-
ok...
ich habe das jetzt verstanden (pipes... stdout.. usw...)
ALSO:
Kann ich auch irgendwie !!TEXTE!! oder !!ZEICHEN!! ohne stdout mit einem 2. Prog "verkabeln"?zB.:
puts("..."); putch('.');
2. FRAGE:
Kann man nicht IRGENDWIE in einem externen Prog TASTENANSCHLÄGE imitieren?
(Damit es überall funktioniert)
PS.: das müsste doch auch gehen, oder?mfG
h
PS.: mit CMD und DOS kenne ich mich eigendlich ganz gut aus, leider habe ich das mit Pipes noch nirgends gehört.
-
chille07 schrieb:
Kann ich auch irgendwie !!TEXTE!! oder !!ZEICHEN!! ohne stdout mit einem 2. Prog "verkabeln"?
ich kenn keine Methode dafuer... vielleicht andere?
2. FRAGE:
Kann man nicht IRGENDWIE in einem externen Prog TASTENANSCHLÄGE imitieren?
(Damit es überall funktioniert)
PS.: das müsste doch auch gehen, oder?nicht Plattformunabhaengig. Fuer Windows gibts WinAPI-Funktionen dafuer, aber frag nicht mich, welche... schau z. B. auf msdn.microsoft.com
-
AN ALLE MODERATOREN!!!!
Bitte das ins API-Forum verschieben!
danke
h