C#Linux getpagesize返回0

问题描述

因此,我试图在C#中使用DllImportgetpagesize()获取Linux上的页面大小。

我使用的签名如下

[DllImport("libc",SetLastError = true,PreserveSig = false)]
private static extern int getpagesize();

并且似乎与documentation相匹配。

由于某些原因,调用getpagesize()总是返回0。其他对本机libc方法调用,例如posix_memalignmprotect都可以正常工作。

我了解到getpagesize()已过时,应该改sysconf(_SC_PAGESIZE)。 所以我尝试了以下签名

[DllImport("libc",PreserveSig = false)]
private static extern long sysconf(int name);

并这样称呼它

long pagesize = sysconf(47);

_SC_PAGESIZEunistd.h228行中的定义如下:

#define _SC_PAGESIZE            47

但是它仍然返回0 ...

那么,如何使用(托管或非托管)C#在Linux系统上获取页面大小?

仅供参考:我正在运行Linux parrot 5.7.0-2parrot2-amd64 #1 SMP Debian 5.7.10-1parrot2 (2020-07-31) x86_64 GNU/Linux

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)