【问题标题】:Getting Virtual Memory Max Map Count in Linux C++在 Linux C++ 中获取虚拟内存最大映射计数
【发布时间】:2017-05-24 15:34:18
【问题描述】:

如何使用 C++ 获取“sysctl vm.max_map_count”或“/proc/sys/vm/max_map_count”

我不想打开 /proc/sys 文件.. 是否有http://man7.org/linux/man-pages/man2/sysctl.2.html 电话来获取号码?

【问题讨论】:

  • I do not want to open the /proc/sys file 为什么?
  • @SingerOfTheFall 我已经使用 sysctl 和其他 libc.so.6 调用而不打开 /proc 文件,我想保持这种方式
  • 你试过sysctl系统调用了吗?
  • @Simon Kraemer - 我能够使用 sysctl 从 bash 设置新的最大映射计数,但是当我:'strace -v sysctl -w vm.max_map_count=12345' sysctl 命令不起作用对我有感觉。
  • 那么你的问题是什么? sysctl 命令不使用 sysctl 功能?老实说,我不明白你的问题。请更新您的问题描述,以便我们真正了解您迄今为止尝试过的内容以及遇到问题的地方。

标签: c++ linux memory virtual sysctl


【解决方案1】:

这个 sysctl 命令将返回一个键值对。

sysctl -q vm.max_map_count
vm.max_map_count = xxxxxx

此 sysctl 命令将返回相同的键值对。

sysctl -e -q vm.max_map_count
vm.max_map_count = xxxxxx

此 sysctl 命令将返回相同的键值对。

sysctl -e -q vm.max_map_count
vm.max_map_count = xxxxxx

此 sysctl 命令将返回相同的键值对。

sysctl -n -e -q vm.max_map_count
xxxxxx

这就是你的答案。但是,我宁愿将 /proc/sys/vm/max_map_count 作为文件打开,并从 C 程序中读取执行进程的值。在 bash 脚本中调用 sysctl 来设置变量会更有意义。

vmval=`sysctl -n -e -q vm.max_map_count`
echo $vmval
xxxxxx

【讨论】:

  • 嗨,也许我的问题并不清楚。我的意思是 - 如何通过 API 以编程方式获取这些值。在我的情况下,使用 bash 脚本作为强制执行要求不是一种选择。
猜你喜欢
  • 2011-05-23
  • 2015-01-26
  • 1970-01-01
  • 1970-01-01
  • 2015-09-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-22
  • 1970-01-01
相关资源
最近更新 更多