2017-07-14 4 views
0

私のコードを書いている間、私はすべてのPOSIX OSに共通の実装を考えました。私が使用するPOSIX APIの1つはposix_fallocate()ですが、テスト中にMacOSでサポートされていないことがわかりました。POSIX APIがOSによって実装されているかどうかを調べる簡単な方法

これまで私が知っていたことは、このAPIを使用していなかったか、各OSごとに別々の実装があることでした。

私の質問です - 異なるOSで特定のposix呼び出しのサポートを見つける簡単な方法は何ですか?人々は常に各ターゲットOSのドキュメントを検索する必要がありますか?

ありがとうございました。

答えて

1

文書を見るのは良いスタートですが、特定の機能が実装されたときにはそれを知らないこともありますが、これも重要です。あいまいなプラットフォームでは、古いバージョンがまだ関連しているかどうかを知ることは難しいかもしれません。特定のPOSIX機能への依存性が許容できるかどうかを判断することがさらに困難になります。

もう1つの質問は、機能が実装されているかどうかですが、標準以下の品質です。 posix_fallocateはこの点で興味深いコーナーケースです。アプリケーションは、この動作がかもしれない何をするかに応じて、

:ファイルシステムが(例えば最近までNFSなど)は、実際の低レベルfallocate操作のサポートを欠いている場合glibcの実装では、エミュレーションを使用しています容認できない。ヘッダーファイルとドキュメントをチェックするだけでこれが表示されない場合があります(上記のドキュメントの注:の部分は最近追加されました)。

最終的に、すべての関連ターゲットでできるだけ早くビルドとテストを行うことができますが、Linux以外のターゲットではますます難しくなっています。

関連する問題