この情報を見つけるのに苦労していて、試行錯誤の結果、値が非常に高いことがわかりました。そこで、コミュニティに、ライオンの長さを確認するAppleページ)を知っている人がいるかどうかを確認するように依頼すると思いました。私が知っているのは、SnowLeopardよりも大きいことだけです。
制限は使用するファイルシステムによって異なります-OSXはデフォルトでHFSPlusを使用します...
私が指摘できる唯一の公式文書は HFS Plus仕様 であり、ファイル名の長さの制限である255を文書化しています。
Wikipedia HFSPlusの最大パス長が「無制限」であることを示唆しています。
おそらく、Apple Devサポートに連絡することが、制限に関する正確なステートメントを取得するための最も信頼できる方法です。
古いですが、私は答えを見つけました:
#include <sys/syslimits.h>
そして、それは#defineとしてPATH_MAX定数を持ちます。私の場合、
char filenameBuffer [PATH_MAX];
最大パスとして1024をハードコーディングすることもできますが、そのような定数を使用すると、新しいリリースでコードがスケーラブルになります。
Mac OS X Yosemiteでの実際のテストによると、最大パス長は1016文字です。 1017は失敗します。
このコマンドをコピーしてMacOSXのターミナルアプリ(またはiTerm2、xtermなど)に貼り付けます
bash $ cc -dM -E -xc - <<< '#include <sys/syslimits.h>' | grep -i ' [NP]A.._MAX'
⟨return⟩または⟨enter⟩それを実行して結果を取得するためのキー:
#define NAME_MAX 255
#define PATH_MAX 1024
これらの最大nameおよびpathの長さは、システムヘッダーファイルsys/syslimits.h
で定義され、cc
(Cコンパイラ)は次のようなデフォルトの場所から読み取ります。/usr/include /またはXcodeアプリのどこかにあります。不可解なスイッチはman cc
に記載されていますが、基本的にこの例では1行のプログラムをコンパイルし、すべての「マクロ」定義をgrep
へのパイプに出力します。これにより、必要な行以外のすべてが除外されます。 。正規表現とのパターンマッチングの詳細については、ウサギの穴をman grep
に従ってください。同様に、
bash $ cc -dM -E -xc - <<< ''
空のプログラムをコンパイルし、この特定のシステムとコンパイラに固有のすべての標準的な「マクロ」定義を出力します。これは、内部で一見の価値があります。