2016-11-01 2 views
-1

Wenn ich chdir() verwende, um das aktuelle Verzeichnis zu ändern, ändert sich das Programm nicht, wenn das Programm heruntergefahren wird. Wie kann ich chdir() auf Shell anwenden, nachdem ich chdir() benutzt habe und Programme beendet wurden?Wie kann ich das Shell-Verzeichnis im C-Sprachprogramm ändern?

+0

** Warum fragst du **? Bitte ** bearbeite die Frage **, um sie zu verbessern und zu motivieren. –

+0

Sie können die PWD-Umgebungsvariable ändern (abhängig von Ihrem Betriebssystem). Aber ich habe es nicht getestet. – LotoLo

+1

@LotoLo: Das Ändern von 'PWD' beeinflusst nicht das aktuelle Verzeichnis des übergeordneten Prozesses (dh den Prozess der Shell) –

Antwort

3

Sie können das nicht tun (Ändern des übergeordneten Shell-Verzeichnisses aus einem C-Programm heraus). Das aktuelle Verzeichnis ist ein Attribut jeder process, und Ihre Shell läuft in einem anderen Prozess als Ihr Programm (so haben der Shell-Prozess und der Prozess Ihres Programms jeweils ein eigenes aktuelles Verzeichnis).

Gelesen Advanced Linux Programming. Es hat mehrere Kapitel zu Ihrem Problem.

Vielleicht könnten Sie etwas Shell-Funktion (zB in Ihrem ~/.bashrc ...) in die vielleicht eval Ihr C-Programm ausführen verwenden könnte (die Ausgabe einige cd Befehl würde, dass die eval oder source builtin der Shell würde Griff innerhalb der gleichen Shell-Prozess); BTW ssh-agent könnte inspirierend sein. Eigentlich empfehle ich diese Route nicht, wenn Sie ein Neuling sind.

PS. Sie sollten wirklich motivieren Sie Ihre Frage und geben Sie viel mehr Kontext; es riecht schlecht wie ein XY problem.

+0

'execl' nur für den Fall, dass Shell-Befehle ausgeführt werden müssen – Ashish

+1

@Ashish: Ich verstehe nicht was du meinst (und wie es mit der Frage des OPs zusammenhängt) und das ändert nichts an der Tatsache, dass jeder Prozess sein eigenes aktuelles Verzeichnis hat. –

Verwandte Themen