C'è qualche differenza che dovrei scegliere l'una rispetto all'altra?Qual è la differenza tra _chdir e SetCurrentDirectory in windows?
risposta
Raggiungono lo stesso risultato ma appartengono a API diverse, pertanto restituiscono i risultati e segnalano gli errori in diversi modi.
Se stai già utilizzando altre routine da entrambe le API, scegli quella. In caso contrario, SetCurrentDirectory() è più "Windowsy", mentre _chdir() è più simile all'API POSIX. Se hai una mente per portare il codice, diciamo, su una piattaforma Linux, usa _chdir(); se sai che eseguirai il codice solo su piattaforme Windows, SetCurrentDirectory().
SetCurrentDirectory è una macro che verrà risolta in SetCurrentDirectoryA o SetCurrentDirectoryW in base alle impostazioni di generazione. Non esiste una macro di sistema fornita per _chdir e _wchdir.
Il MSDN page for SetCurrentDirectory afferma che l'argomento può essere relativo alla directory di lavoro corrente o assoluto. La documentazione di _chdir non dice in alcun modo, anche se sembra che lo faccia sia Can chdir() accept relative paths? su Linux.
_chdir
utilizza attualmente SetCurrentDirectory
internamente, quindi nella maggior parte dei casi sono effettivamente intercambiabili. Tuttavia, _chdir
fa ancora una cosa: aggiorna la directory corrente dell'unità corrente, memorizzata in una variabile di ambiente. Ciò è necessario, come afferma l'osservazione in _tchdir
, perché "altre funzioni (percorso completo, spawn, ecc.) Richiedono che siano impostate".
io non sono sicuro di quanto questo è necessario in questi giorni, ma direi che - se si sta utilizzando le funzioni POSIX-style per le operazioni sui file, manipolazione percorso, creazione del processo, ecc, utilizzare _chdir
conseguenza. Se stai utilizzando direttamente le funzioni API di Win32, utilizza SetCurrentDirectory
.
È lo stesso * falso * per directory corrente dell'unità che utilizza l'interprete cmd.exe? –
@DavidHeffernan, non sono sicuro di aver capito la tua domanda (potresti riformularla?), Ma penso che la risposta sia sì - utilizza le strane variabili di ambiente "= C", che secondo [questo] (http://blogs.msdn.com/b/oldnewthing/archive/2010/05/06/10008132.aspx) vengono utilizzati anche da cmd. – eran
sì, è quello che intendo e Raymond spiega cosa intendo fingendo –
- 1. Qual è la differenza tra socket e HANDLE in Windows?
- 2. Qual è la differenza tra GTK # e Windows Form?
- 3. Qual è la differenza tra = e: =
- 4. Qual è la differenza tra `##` e `hashCode`?
- 5. Qual è la differenza tra dict() e {}?
- 6. qual è la differenza tra:.! e: r !?
- 7. Qual è la differenza tra Verilog! e ~?
- 8. Qual è la differenza tra ("") e (null)
- 9. Qual è la differenza tra? : e ||
- 10. qual è la differenza tra [[], []] e [[]] * 2
- 11. Qual è la differenza tra $ e $$?
- 12. Qual è la differenza tra " " e ""?
- 13. Qual è la differenza tra {0} e ""?
- 14. Qual è la differenza tra {0} e +?
- 15. Qual è la differenza tra .ToString() e + ""
- 16. Qual è la differenza tra strtok_r e strtok_s in C?
- 17. qual è la differenza tra installshield e windowsinstaller
- 18. Qual è la differenza tra "in fp" e "in fp.readlines()"?
- 19. Qual è la differenza tra mutex e sezione critica?
- 20. Qual è la differenza tra handle e thread?
- 21. Qual è la differenza tra WPF e WinForms?
- 22. Qual è la differenza tra x86 e x64
- 23. Qual è la differenza tra Docker per Windows e Docker su Windows?
- 24. Qual è la differenza esatta tra Windows Azure e Windows IIS?
- 25. Qual è la differenza tra Dock e Anchor
- 26. Qual è la differenza tra tubi e prese?
- 27. Qual è la differenza tra l'evento CoreWindow.GetForCurrentThread(). SizeChanged e Window.Current.SizeChanged
- 28. Qual è la differenza tra un'applicazione appx e un'applicazione appxbundle?
- 29. Qual è la differenza tra .NET Core e PCL?
- 30. Qual è la differenza tra "Applicazioni Windows Phone" e "Applicazioni Silverlight per Windows Phone"?
Non conosco la risposta ma +1 per chiedere. –
Si potrebbe invece voler confrontare 'SetCurrentDirectory' con' _tchdir'. – Mehrdad