2017-01-27 5 views
4

なぜシステムコールgetpagesize()intを返し、unsigned intまたはsize_tではないのですか?getpagesize()がintを返すのはなぜですか?

Prototypeと、以下の短い説明:それが発明されたとき

GETPAGESIZE(2)                
    NAME 
      getpagesize - get memory page size 
    SYNOPSIS 
      #include <unistd.h> 
      int getpagesize(void); 
+1

同様の理由で* [理由] * [this](http://stackoverflow.com/questions/38719737/why-does-fgets-accept-an-int-instead-of-a-size-t )、私が推測しなければならなかったら[?] –

答えて

8

intはおそらく十分でした。しかし、 getpagesize()が2001年以来POSIX標準から削除され、sysconf()に取って代わりられているため、もはや問題にはなりません。 sysconf(_SC_PAGESIZE)を使用してください。

getpagesize() returning an int was one of the major reasons why it was removed:

はgetpagesize

はgetpagesize()関数は、現在のページ・サイズを返します。 sysconf(_SC_PAGE_SIZE)およびsysconf(_SC_PAGESIZE)と同等です。 intを返すこのインターフェイスは、将来的に適切な値を表すのに問題がある可能性があります。また、可変サイズのページをサポートするシステムでこのインターフェイスの動作が指定されていません。可変ページ・サイズ・システムでは、ページは非常に大きくなる可能性があります(理論的には、メモリのサイズまで)。これにより、共通のページ属性を持つ大量のメモリセグメントに対して非常に効率的なアドレス変換が可能になります。 これについての注意点は、Application Usageと、Legacyとマークされたインターフェイスに追加されています。アプリケーションでは、代わりにsysconf()インターフェイスを使用することを推奨します。

(強調鉱山)。

+0

この答えに感謝 – Oscar

関連する問題