2009-08-18 88 views
11

有沒有什麼辦法讓我可以變化到任意目錄通過執行C程序有什麼方法可以用C語言改變目錄嗎?

+0

你在找'cd'嗎?或者你正在尋找一種方法來真正在C中設置一個活動目錄? – Eric 2009-08-18 12:58:46

+2

它被稱爲錘子! :P – 2009-08-18 13:00:57

+0

這個問題通常作爲一個練習,讓學生學習像unix一樣的操作系統。如果是這樣的話,請特別注意彼得所說的*哪些流程可以或不可以受到影響。 – dmckee 2009-08-18 15:22:56

回答

11

根據您的操作系統有改變當前目錄不同的呼叫。這些通常只會更改運行可執行文件的進程的當前目錄。進程退出後,您將位於您開始訪問的目錄中。

+1

謝謝彼得,所以看起來目錄的物理變化不會發生。 – 2009-08-18 13:10:23

+2

當前目錄是進程狀態的一部分(如打開文件,內存映射,環境變量等)。通常一個進程不能改變另一個進程的狀態(通常,調試器等可能有特殊的權限,但這是另一回事)。 – AProgrammer 2009-08-18 13:23:16

+5

這就是爲什麼'cd'是shell內置的,而不是一個單獨的可執行文件。 – 2009-08-18 13:25:29

12

chdir()函數。欲瞭解更多信息,請使用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; 
} 

this

+2

你測試了這個嗎? – alk 2014-09-24 05:54:50

8

chdir()僅更改進程的當前工作目錄,但不更改正在工作的上下文。假設你在終端執行程序和你的當前目錄是/home/Documents,然後在執行具有以下行

chdir("cd ../Downloads"); 

不會改變終端的工作目錄的程序,但更改,只有過程。

相關問題