2009-08-18 5 views
11

Gibt es eine Möglichkeit, durch die ich kann Wechsel in ein beliebiges Verzeichnis durch eine C-Programm ausführt?Gibt es eine Möglichkeit, das Verzeichnis mit der Sprache C zu ändern?

+0

Suchen Sie nach 'cd'? Oder suchen Sie nach einer Möglichkeit, ein aktives Verzeichnis in C zu setzen? – Eric

+2

Es heißt ein Hammer! : P –

+0

Diese Fragen werden oft als Übung für Studenten gegeben, die sich an unixartige Betriebssysteme lehnen. Wenn dies der Fall ist, achten Sie genau darauf, was Peter sagt * welche Prozesse * können und nicht beeinflusst werden können. – dmckee

Antwort

11

auf Ihrem O Je gibt es verschiedene Anrufe für das aktuelle Verzeichnis zu ändern. Diese ändern normalerweise nur das aktuelle Verzeichnis des Prozesses, der die ausführbare Datei ausführt. Nachdem der Prozess beendet wurde, befinden Sie sich in dem Verzeichnis, in dem Sie begonnen haben.

+1

Danke Peter, so scheint es, dass die physische Änderung des Verzeichnisses nicht stattfinden wird. –

+2

Das aktuelle Verzeichnis ist Teil des Status eines Prozesses (wie offene Dateien, Speicherkarten, Umgebungsvariable ...). Normalerweise kann ein Prozess den Status eines anderen Prozesses nicht ändern (normalerweise haben Debugger usw. spezielle Berechtigungen, aber das ist eine andere Geschichte). – AProgrammer

+5

Und deshalb ist 'cd' eine eingebaute Shell, keine separate ausführbare Datei. –

12

Die chdir() Funktion. Verwenden Sie für weitere Informationen 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; 
} 

Per this

+2

Haben Sie das getestet? – alk

8

chdir() ändert nur das aktuelle Arbeitsverzeichnis des Prozesses, aber nicht den Kontext, in dem Sie arbeiten. Angenommen, Sie ein Programm im Terminal ausführen und Ihr aktuelles Verzeichnis ist /home/Documents, dann auf Ausführen eines Programms mit den folgenden Zeilen

chdir("cd ../Downloads"); 

nicht das Arbeitsverzeichnis des Terminals ändern, aber ändert, dass der Prozess nur.

Verwandte Themen