system calls
-
Hallo!
Arbeite also unter einer Linux Workstation und will eben mal ein paar system calls in c++ realisieren, im Prinzip gehts darum, dass der User den Befehl eingibt und dieser dann ausgeführt wird (durch system()).
Da das ganze eine Netzwerkanwendung ist kommen Sockets ins Spiel also so siehts etwa aus:
User --> verbindet sich zu Server --> gibt Befehl ein
Server führt Befehl aus --> sendet Ergebnis des Befehles zurück an den UserAlso wenn der User beispielsweise ls eingibt soll ein system("ls"); gemacht werden und das Ergebnis (also die Auflistung des gesamten Verzeichnisses) an den User zurückgesendet werden.
Meine Frage:
Kann ich das Ergebnis des Systemcalls direkt abfragen? Also stehen die Auflistung der Verzeichnisse in einer Variable, die ich dann konfortabel dem User senden kann oder muss ich es etwa so machen: system("ls>read.txt"); dann mit ifstream die read.txt einlesen und diese an den User senden...?Was ich bis jetzt versucht habe:
int error = system("ls");Würde einfach einen Wert zurückgeben, ob der Befehl korrekt ausgeführt wurde.
system nimmt leider auch keinen 2ten Parameter, deshalb bin ich ein wenig verwirrt, denn ich bin der Meinung, dass es mögich sein muss / sollte eben das Ergebnis direkt in eine Variable zu speichern und nicht den Umweg über eine externe Datei fahren zu müssen...
Danke 4 help
-
system() wurde nicht gebaut um die Funktionalität von Systemprogrammen in das eigene Programm einzubinden. Überhaupt gibt es dafür eigentlich keinen Weg, denkbar wäre aber z.B. eine Pipe die du dann in deinem Programm ausliest. Pipes haben natürlich nichts mehr mit ISO-C++ zu tun, aber das haben deine System-Calls via system() auch nur am Papier.
Sieh dir dazu mal popen() an, lässt sich dann wie eine Datei (zwar C-like, Unix eben) auslesen, ohne wirklich über eine Datei zu gehen.
MfG SideWinder
-
Wegen dem 2ten parameter.
mach doch einfach eine zusammengesetzten string.sprintf(stringname,%s %s,string,string)
-
SpiderX schrieb:
Wegen dem 2ten parameter.
mach doch einfach eine zusammengesetzten string.sprintf(stringname,%s %s,string,string)Das ändert aber nichts daran, dass ich keine Möglichkeit habe das Resultat des mit Hilfe von system() ausgeführten Programms auszulesen.
MfG SideWinder
-
Funktioniert system(); überhaupt auf Linux?
mfg Helfernder Frager
-
ssh?