C'è un modo con cui posso modifica a qualsiasi directory eseguendo un programma di C?C'è un modo per cambiare directory usando il linguaggio C?
risposta
seconda del sistema operativo ci sono richieste diverse per cambiare la directory corrente. Normalmente, questi cambieranno solo la directory corrente del processo che esegue l'eseguibile. Dopo che il processo è terminato, sarai nella directory in cui hai iniziato.
Grazie Peter, quindi sembra che il cambiamento fisico di directory non avrà luogo. –
La directory corrente fa parte dello stato di un processo (come file aperti, mappe di memoria, variabili d'ambiente ...). Di solito un processo non può cambiare lo stato di un altro processo (di solito, il debugger e così via possono avere privilegi speciali, ma questa è un'altra storia). – AProgrammer
Ed è per questo che 'cd' è una shell incorporata, non un eseguibile separato. –
La funzione chdir()
. Per maggiori informazioni, utilizzare man chdir
.
Sì, la funzione chdir().
Ebbene, il comando POSIX per cambiare la directory corrente è:
chdir(const char*path);
chdir()
modifica solo la directory di lavoro corrente del processo ma non del contesto in cui stai lavorando. Si supponga di eseguire un programma nel terminale e la vostra directory corrente è /home/Documents
, quindi su esecuzione di un programma avente le seguenti linee
chdir("cd ../Downloads");
non cambierà la directory di lavoro del terminale, ma i cambiamenti che di solo il processo.
Stai cercando 'cd'? O stai cercando un modo per impostare effettivamente una directory attiva in C? – Eric
Si chiama martello! : P –
Queste domande sono spesso fornite come un esercizio per gli studenti che si appoggiano a sistemi operativi unix. In questo caso, presta particolare attenzione a ciò che Peter dice su * quali processi * possono e non possono essere influenzati. – dmckee