ein anderes programm über cli steuern
-
hi,
wie kann man aus dem eigenen programm ein anderes, kommandozeilengesteuertes programm steuern, d.h. befehle senden und ausgaben empfangen? geht das irgendwie mit pipe(2) ?
(JA, das ist nicht direkt standard-c++, aber näher dran, als an allem anderen)
-
Auf WinAPI- oder MFC-Ebene würde ich sagen, schick dem Programm Nachrichten über SendMessage() und Konsorten, ob das auch in CLI geht, kann ich nicht sagen.
(btw haben wir ein eigenes Board für C++/CLI ;))
-
CStoll schrieb:
(btw haben wir ein eigenes Board für C++/CLI ;))
häh? ich will aber kein .NET benutzen. oder gibt's noch ein anderes? übrigens: OS ist linux, hätt' ich vielleicht dazu sagen sollen...
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
kcjfmao skdfmasdkf ,cmyxn schrieb:
CStoll schrieb:
(btw haben wir ein eigenes Board für C++/CLI ;))
häh? ich will aber kein .NET benutzen. oder gibt's noch ein anderes?
Sorry, da habe ich mich wohl von dem "cli" im Thread-Titel irritieren lassen.
Unter Linux fällt mir auf Anhieb nur man: popen ein, aber da erhält der Aufrufer afaik keine Rückmeldung vom aufgerufenen Programm, was es gerade erwartet (oder hat keine Möglichkeit, Eingaben zu schicken).
(aber ich bin auch kein Linux-Experte)
-
[man: popen(3}](http://man.cx/popen(3}) oder man: pipe(2) sind da schon der richtige Ansatz. Du musst eben eine pipe haben, die von dem anderen Prozess liest und eine dir schreibt.
-
hi,
rüdiger schrieb:
[man: popen(3}](http://man.cx/popen(3}) oder man: pipe(2) sind da schon der richtige Ansatz. Du musst eben eine pipe haben, die von dem anderen Prozess liest und eine dir schreibt.
ok, und wie mach' ich das? wie CStoll (und die manpage) schon gesagt hat, kann ich mit popen entweder lesen, oder schreiben, aber nicht beides. wie kann ich jetzt die pfeife () mit dem anderen programm verbinden?
-
oh, dann musst du wohl pipe(2) benutzen und die popen quasi nachbauen, nur dass du anstelle einer pipe 2 (oder 3, wenn dich stderr auch interessiert) anlegen.
-
ok, ich fühl mich jetzt ein bisschen doof. soll ich einfach zwei pipes erzeugen, und dann den aufruf vom command-line-programm in der art "sftp<&[eingabe-pipe-nr]>&[ausgabe-pipe-nummer]" machen?