2012-09-20 57 views
2

我即將編寫一個顯示linux中當前目錄的命令。我知道我可以使用「pwd」命令,但這就是我需要實現的東西!換句話說,當進入所謂的「findme」命令時,我想返回我所在的目錄時刻。我已經設法創建了我的「findme」命令(這很簡單,我知道),但是爲了顯示整個目錄,我怎麼知道執行命令後我在哪裏?如何在Linux中手動查找您的目錄?

+0

你想使用什麼編程語言? – lilalinux

+0

C,我必須執行我的XV6環境命令 –

+0

clickety click ... xv6。啊,所以這_is_ [作業](http://meta.stackexchange.com/questions/10811/how-to-ask-and-answer-homework-questions)? –

回答

2

這似乎是一個相當奇怪的要求:'執行pwd'(這不是作業,是嗎?)。你可以提供更多的背景嗎?的信息

大概相關位是:

  • 目錄..鏈接到父目錄,並.到當前一個;所以...
  • 將目錄更改爲..在文件系統中上升一級(除非您位於頂端);加
  • 每個目錄都有一個'inode號碼',所以如果你考慮一個目錄foo,那麼它和目錄foo/.都會有相同的inode號碼。

我不知道pwd實際上是怎麼做的,但我會躺下錢,你可以用這些信息重新實現它。

+0

確實有可能,但只是暴露一個新的系統調用方式更容易。 –

+0

這是FreeBSD的'getcwd()'如果查詢路徑名的系統調用失敗的話。如果路徑名太長,系統調用可能失敗,其中一個目錄名稱脫離了名稱緩存或者因爲調試目的而被禁用。 – jilles

+0

實際上,這是一個家庭作業,但是當你到達死衚衕時,爲作業獲得一些幫助是犯罪嗎? 這應該是這樣的: 當你不在某個目錄時,它應該只顯示「/」字符,如果你創建一個臨時目錄,應該顯示「/ temp」。 我認爲我應該做的就是使用「cd」命令並將其陣列中的每個buf元素> = 4複製到新數組,以便在調用「pwd」命令時打印新數組。 對不對? –

0

XV6與GNU/Linux完全不一樣。 pwd沒有在UNIX V6中實現,這就是爲什麼這是一個很好的練習。您可能想要將getcwd()作爲系統調用來實現。