あなたは再帰的にディレクトリツリーをトラバースする必要がある場合は、それを行うには2つの方法があります:あなたが行くようにディレクトリの再帰呼び出し
は、.../... /を増やす長さのパス名を構築し.. 。
chdirを使用すると、各ディレクトリに降りてくるので、2つ以上のコンポーネントより長いパス名は扱いません。
最初の方法は私をより鮮明にしてくれます。途中でアンマウントされたような不適切なイベントに対しては、より強固な方法です。一方、GNU のコードを見てみると、ユーティリティを見つけると、2番目の方法が使用されていることがわかります。それには理由がありますか?私が考えていなかった第2の方法の利点?
興味深い!どのように移植するのが実際にですか? – rwallace
あなたの練習によって異なります。 BSDに由来するAPIです。それはLinux上で遍在しています。ソラール[has it](http://book.chinaunix.net/special/ebook/addisonWesley/APUE2/0201433079/ch04lev1sec21.html#ch04ex08); AIX [libc.aにある](http://publib.boulder.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.basetechref%2Fdoc%2Fbasetrf1%2Fnftw.htm )...私はそれがかなり普及していると思います。私は潜在的な違いについて知らない – sehe
そしてhttp://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man3/ftw.3.htmlにはMac OSがあります。新しいコードでは代わりにftsを使用すべきですか? – rwallace