为什么getpagesize()返回一个int?

时间:2017-01-27 09:46:27

标签: c unix memory-management int system-calls

为什么系统调用getpagesize()会返回int而不是unsigned intsize_t

下面的原型和简短说明:

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

1 个答案:

答案 0 :(得分:9)

发明时,{p> afterEvaluate { }可能就足够了。但它不再是一个问题因为 自2001年以来,int已从POSIX标准中删除,并已被getpagesize()取代。 您应该使用sysconf()

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

  

getpagesize的

     

getpagesize()函数返回当前页面大小。它等同于sysconf(_SC_PAGE_SIZE)和sysconf(_SC_PAGESIZE)。 返回int的此接口可能在将来表示适当的值时出现问题。此外,在支持可变大小页面的系统上,未指定此接口的行为。在可变页面大小的系统上,页面可能非常大(理论上,最大内存大小)。这允许对具有共同页面属性的大段内存进行非常有效的地址转换。 有关此问题的说明已添加到“应用程序使用情况”,并且界面标记为“旧版”,并建议应用程序应使用sysconf()接口。

(强调我的)。