system() funzt nicht wie es soll.... HILFE!!
-
Hallo.
Ich beschäftige mich seit ca 3 Monaten mit C++.
Für meinen Webserver, der keine Grafische Oberfläche hat, wollte ich mir einen Dateimanager bauen, nur das funzt nich so ganz....Die cd-Befehle funzen nicht... Er führt den Befehl zwar aus, aber das Verzeichnis wird trodzdem nicht gewechselt
Was mache ich falsch bzw. ist das überhaupt möglich so wie ich mir das vorgestellt habe?#include <iostream> #include <string> using namespace std; int main() { int menue; menue = -1; string eingabe; string wechseln; while(menue != 0) { cout << "BiFis Server Manager 1.0" << endl << endl << "<1> Ordner hoch" << endl << "<2> Ordner wechseln" << endl << "<3> Ordnerinhalt auflisten" << endl cin >> menue; cout << endl; switch(menue) { case 0: cout << "Programm beendet" << endl; break; case 1: system("cd .."); break; case 2: cout << "Ordnername: "; cin >> eingabe; wechseln = "cd " + eingabe; system(wechseln.c_str()); break; case 3: system("ls"); break; } } return 0; }
-
Das kann auch nicht funktionieren!
Die system()-Funktion startet eine Shell (/bin/sh) und führt in dieser Shell das Programm aus. Daraus folgt natürlich, dass mit dem cd-Befehl das aktuelle Verzeichnis in dieser neuen Shell geändert wird (genauer gesagt: das Arbeitsverzeichnis des neuen Prozesses, in dem die Shell läuft). Die Shell (und damit auch der neue Prozess) wird jedoch nach Ausführen des cd-Befehls beendet.
Für das Hauptprogramm bleibt das alles ohne jede Wirkung!
Lösung: Nimm doch einfach die entsprechende POSIX-C-Funktion chdir.
Martin
-
-
Danke.
Mit chdir funzt es.