2017-04-26 108 views
0

我得到了一個任務,我必須使用ncurses和C構建一個自定義終端,並且需要執行幾個命令。使用chdir()是在Linux C中更改工作目錄的唯一方法嗎?

其中一個命令恰好是CHDIR,其目的是要改變工作目錄,但是當涉及到改變工作目錄除了已經建成的chdir我找不到任何東西在C的相關()功能在C.

它被要求我做不是使用可用的chdir()函數,而是建立自己的。我甚至不確定這是否可能,或者如果它是一個錯誤,目錄處理不應該依賴於實現嗎?

謝謝你的時間和幫助。

+6

這是不可能的,這是一個錯誤。您必須使用系統調用chdir(2)才能更改pwd。誰說你必須建立自己的不知道他們在說什麼。 –

+0

我想這樣,謝謝你確認:) – Stefan

+5

進程的當前工作目錄由內核控制。要真正「建立自己的」,你必須修改內核。正如@AhmedMasud所說,誰說你必須建立自己的人並不知道他們在談論什麼。但要注意的一件事是,也許你不應該*改變工作目錄,因爲它是一個全過程的事情,並且可能影響程序的其他部分。一般來說,'chdir()'是非常小心使用的東西。 –

回答

3

chdir()是更改進程當前工作目錄的唯一方法。如果您不允許使用此功能,您可以通過跟蹤應用程序中的當前目錄來部分模擬chdir(),例如通過使用一個變量。請注意,這樣的模擬不會完成,特別是子進程的工作目錄將是您的程序啓動的地方,而不是您的變量中的一個。

+3

您可以打開目錄以獲取文件描述符並使用[fchdir()](http://pubs.opengroup.org/onlinepubs/009695399/functions/fchdir.html)。這符合規則的信件,但不符合精神。 – JeremyP