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?
Antwort
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.
'execl' nur für den Fall, dass Shell-Befehle ausgeführt werden müssen – Ashish
@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. –
- 1. Wie kann ich das Attribut im Datensatz von Fusionchart ändern?
- 2. Wie kann ich das Benutzerpasswort ändern?
- 3. Wie kann ich das Sourcetree-Thema ändern?
- 4. Wie kann ich das Titelsymbol ändern?
- 5. Chesspresso: Wie kann ich das Promotionsstück ändern?
- 6. Wie kann ich das MySQL-Datumsformat ändern?
- 7. Wie kann ich das Standardprogramm ändern?
- 8. Wie kann ich das Mauszeigerbild ändern?
- 9. Wie kann ich das PreferenceActivity-Thema ändern?
- 10. Wie kann ich das Datum zu ändern
- 11. Kann ich Benachrichtigungen im Benachrichtigungsfeld zusammenführen/ändern?
- 12. Kann ich SparkContext.appName im laufenden Betrieb ändern?
- 13. Kann ich Requisiten im Konstruktor ändern?
- 14. Wie sollte ich das Ressourcenwörterbuch im WinRT-Projekt ändern?
- 15. kann ich den Werttyp im Dataframe ändern?
- 16. Wie kann ich das Layout-Editor-Vorschaubereich-ToolBar-Menü ändern?
- 17. Kann ich das Hintergrundbild in PHPStorm ändern?
- 18. Wie kann ich das Symbol von Primzahlen ändern? Roededitor
- 19. Warum kann ich das Ergebnisobjekt nicht ändern
- 20. Wie kann ich das Apple Watch App Icon ändern?
- 21. Wie kann ich das Symbol für Chrome Developer Tools ändern?
- 22. Wie kann ich eine Zip-Datei nur im Speicher ändern?
- 23. Wie kann ich das Projekt in BigQuery ändern?
- 24. Wie kann ich die Schließen-Schaltfläche im Infowindow (Blase) ändern?
- 25. Wie kann ich ImageButton ändern?
- 26. Wie kann ich den Endpunkt meines Torprozesses im Stamm ändern?
- 27. Wie kann ich ein MenuItem im Optionsmenü von Android ändern?
- 28. Wie kann ich die Fehlerkonsole im Entwicklermodus von Chrome ändern?
- 29. Wie kann ich das aktuelle Datum im Kurzformat in Swift
- 30. Wie kann ich das Design der Bootstrap-Dropdown-Taste ändern
** Warum fragst du **? Bitte ** bearbeite die Frage **, um sie zu verbessern und zu motivieren. –
Sie können die PWD-Umgebungsvariable ändern (abhängig von Ihrem Betriebssystem). Aber ich habe es nicht getestet. – LotoLo
@LotoLo: Das Ändern von 'PWD' beeinflusst nicht das aktuelle Verzeichnis des übergeordneten Prozesses (dh den Prozess der Shell) –