Was ist der Unterschied zwischen _chdir und SetCurrentDirectory in Windows?

8

Gibt es einen Unterschied, dass ich einen über den anderen wählen sollte?

    
shawn 25.09.2011, 07:11
quelle

3 Antworten

10

Sie erzielen das gleiche Ergebnis, gehören jedoch zu verschiedenen APIs. Daher geben sie ihre Ergebnisse zurück und melden Fehler auf verschiedene Arten.

Wenn Sie bereits andere Routinen von einer der beiden APIs verwenden, wählen Sie diese aus. Wenn nicht, ist SetCurrentDirectory () mehr "Windowsy", während _chdir () der POSIX-API ähnlicher ist. Wenn Sie den Code auf eine Linux-Plattform portieren möchten, verwenden Sie _chdir (); Wenn Sie wissen, dass Sie den Code nur auf Windows-Plattformen ausführen, SetCurrentDirectory ().

    
Uffe 25.09.2011, 07:34
quelle
7

_chdir verwendet intern SetCurrentDirectory , daher sind sie in den meisten Fällen effektiv austauschbar. % Co_de% macht jedoch noch eine Sache: Es aktualisiert das aktuelle Verzeichnis des aktuellen Laufwerks, das in einer Umgebungsvariablen gespeichert ist. Dies wird benötigt, wie die Bemerkung in _chdir sagt, weil "andere Funktionen (Fullpath, Spawn, etc.) sie setzen müssen".

Ich bin mir nicht sicher, wie viel das heutzutage benötigt wird, aber ich würde sagen - wenn Sie diese POSIX-ähnlichen Funktionen für Dateioperationen, Pfadmanipulationen, Prozesse usw. verwenden, verwenden Sie _tchdir entsprechend. Wenn Sie Win32-API-Funktionen direkt verwenden, verwenden Sie _chdir .

    
eran 25.09.2011 08:07
quelle
0

SetCurrentDirectory ist ein Makro, das abhängig von den Erstellungseinstellungen in SetCurrentDirectoryA oder SetCurrentDirectoryW aufgelöst wird. Es gibt kein Systemmakro für _chdir und _wchdir.

Die MSDN-Seite für SetCurrentDirectory gibt an, dass das Argument relativ zum aktuellen Arbeitsverzeichnis sein kann oder absolut. Die Dokumentation für _chdir sagt nicht so oder so, obwohl es scheint, kann chdir () relativ akzeptieren Pfade? auf Linux.

    
IronMensan 25.09.2011 07:43
quelle

Tags und Links