Cythonでアクセスしたいいくつかの標準Cライブラリには、たくさんのフラグがあります。Cythonのドキュメントには、必要なヘッダーの部分を複製する必要があると記載されています。関数の定義に関しては、これで問題ありません。それらは通常どこにでも複製され、ドキュメントが含まれます。しかし、これらすべてのマジックナンバーはどうですか?
を呼び出したい場合はmmap
、いつでも関数定義を見つけて.pxdファイルに貼り付けることができます。
void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset)
PROT_READ
しかし、それを呼び出すには、などのような大量のフラグが必要MAP_ANONYMOUS
です。これには少なくとも2つの問題があります。
まず、これらの数値が定義されている場所を正確に特定するのは面倒な作業です。実際、私はむしろ.cファイルを作成し、必要な値をprintfしたいと思います。次のような特定のフラグの値を見つけるためのより良い方法はありますPROT_READ
か?
第二に、これらの数値はどれくらい安定していますか?必要なすべての値を抽出し、それらをCythonソースにハードコーディングした後、別のプラットフォームでのコンパイルが切り替わった可能性はどのくらいPROT_READ
ありPROT_EXEC
ますか?
良い方法や適切な方法がないと答えても、聞きたいです。何かを見逃していないことがわかっている限り、何かが面倒であることをいつでも受け入れることができます。