问题描述
因此,我试图在C#中使用DllImport
和getpagesize()
来获取Linux上的页面大小。
我使用的签名如下
[DllImport("libc",SetLastError = true,PreserveSig = false)]
private static extern int getpagesize();
并且似乎与documentation相匹配。
由于某些原因,调用getpagesize()
总是返回0
。其他对本机libc方法的调用,例如posix_memalign
和mprotect
都可以正常工作。
我了解到getpagesize()
已过时,应该改用sysconf(_SC_PAGESIZE)
。
所以我尝试了以下签名
[DllImport("libc",PreserveSig = false)]
private static extern long sysconf(int name);
并这样称呼它
long pagesize = sysconf(47);
_SC_PAGESIZE
在unistd.h第228
行中的定义如下:
#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 (将#修改为@)