2010-09-19 54 views
1

我正在嘗試在Linux中使用C++編寫一個程序,該程序計算用戶指定目錄中的文件和文件夾的數量,但我讀得越多,越困惑我明白了。我不熟悉C++和一般的編程,而且我明白,一開始我就有一個很大的障礙,但我不確定從哪裏開始閱讀。我已經閱讀了一些關於分叉進程和系統調用的內容,但是如果有人簡要地概述了我必須完成的過程,那麼我可以更深入地閱讀各種函數。C++程序來計算特定Linux目錄中的對象數

+1

這與'fork'無關。雖然它*是一個基本的Unix-y系統調用,並且大量的材料都在談論它,但不要認爲你必須爲所有事情都使用它。 ;) – 2010-09-19 20:52:09

+0

「Linux目錄中的對象數量」應該包含多個文件和文件夾。例如,檢查'/ dev /'目錄。 – MSalters 2010-09-20 07:27:00

回答

3

如果你真的做Linux的方式,一起來看看在opendirreaddirclosedir系統調用。有一個例子here,它基本上是你正在編寫的程序(儘管它打印內容而不是計算它們)。

如果我是你,我會堅持像喬治建議的更高級別的圖書館。

0

在* nix可以將C庫函數opendirreaddir

基本上,調用執行opendir()來得到一個處理一個目錄。使用readdir()對目錄中的條目進行迭代()

0

執行此操作的最簡單和最具跨平臺的方法是使用boost::filesystem。在UNIX(Linux,Mac OS X,免費BSD等)上有許多方法可以做到這一點。如已經指出的那樣,opendir,readdirclosedir是可能的。我應該指出,不使用readdir,最好使用readdir_r這是可重入的(意味着從多個不同的線程同時使用是安全的),而普通的readdir調用不是可重入的(因此不能由單個UNIX規範/ IEEE標準1003.1又名POSIX爲線程安全)。儘管這些可能不是最容易使用的,並且不適合執行此特定任務,但對於其他處理文件系統的操作,您可能還對nftwftw感興趣,它們特別適合作用於文件系統的子樹。