2009-08-18 5 views
11

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?

+0

Stai cercando 'cd'? O stai cercando un modo per impostare effettivamente una directory attiva in C? – Eric

+2

Si chiama martello! : P –

+0

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

risposta

11

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.

+1

Grazie Peter, quindi sembra che il cambiamento fisico di directory non avrà luogo. –

+2

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

+5

Ed è per questo che 'cd' è una shell incorporata, non un eseguibile separato. –

12

La funzione chdir(). Per maggiori informazioni, utilizzare man chdir.

0
#include "stdafx.h" 
#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 

int main(int argc, char* argv[]) 
{ 
    system("C:\\windows\\notepad.exe"); 
    chdir("C:\\windows\\desktop"); 
    return 0; 
} 

Come per this

+2

Hai provato questo? – alk

8

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.