sysinfo 系统调用未返回正确的 freeram 值

2023-11-29

我最近使用 sysinfo 系统调用编写了以下 C 代码来显示系统统计信息,有趣的是 sysinfo 结构的 freeram 变量不返回可用 RAM 的数量,而是返回当前 RAM 使用情况。我必须使用一种解决方法,通过从总内存中减去自由内存来显示正确的值。我尝试用谷歌搜索这个特定变量,但没有成功。任何对这种奇怪行为的洞察都会非常有帮助。

/*
 * C program to print the system statistics like system uptime, 
 * total RAM space, free RAM space, process count, page size
 */

#include <sys/sysinfo.h>    // sysinfo
#include <stdio.h>
#include <unistd.h>     // sysconf
#include "syscalls.h"       // just contains a wrapper function - error

int main()
{
    struct sysinfo info;

    if (sysinfo(&info) != 0)
        error("sysinfo: error reading system statistics");

    printf("Uptime: %ld:%ld:%ld\n", info.uptime/3600, info.uptime%3600/60, info.uptime%60);
    printf("Total RAM: %ld MB\n", info.totalram/1024/1024);
    printf("Free RAM: %ld MB\n", (info.totalram-info.freeram)/1024/1024);
    printf("Process count: %d\n", info.procs);
    printf("Page size: %ld bytes\n", sysconf(_SC_PAGESIZE));

    return 0;
}

“免费公羊”字段对大多数人来说毫无意义。最接近真正的“免费内存”值的是从/proc/meminfo并减去Committed_AS from MemTotal。如果正在使用交换区,结果可能为负(这意味着分配的内存多于物理内存所能容纳的内存);如果你也想将交换区算作内存,只需使用MemTotal+SwapTotal作为你的总数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sysinfo 系统调用未返回正确的 freeram 值 的相关文章

  • 加权 Voronoi 的 CGAL 2D APOLLONIUS 图 - 如何生成和获取面和顶点?

    我正在尝试根据阿波罗尼乌斯图生成加权沃罗诺伊 我正在使用 CGAL 库 我找不到如何从 apollonius 获取面和顶点的好例子 我有以下类型定义 typedef double NT typedef CGAL Cartesian lt N
  • 如何使用movntdqa避免缓存污染?

    我正在尝试编写一个 memcpy 函数 该函数不会将源内存加载到 CPU 缓存中 目的是避免缓存污染 下面的 memcpy 函数可以工作 但会像标准 memcpy 一样污染缓存 我正在使用带有 Visual C 2008 Express 的
  • 将数组从 C# 编组到 C++ 并返回:PInvokeStackImbalance

    我有一个 C 函数 我想从 C 访问它 问题是我不断收到 PInvokeStackImbalance 异常 但我不知道为什么 当检查异常被关闭时 一切都运行良好并且符合预期 我的 C 函数的签名是 extern C double solve
  • WPF MVVM将DataTable绑定到DataGrid不显示数据

    我有一个简单的控件 其中包含一个 DataGrid 其中 ItemsSource 绑定到 DataTable 当我填充 DataTable 时 我可以看到 DataGrid 中添加了行 但没有显示任何数据 我没有为此 DataGrid 使用
  • 使用 Thread.Sleep() 时,异步编程如何与线程一起工作?

    假设 前言 在之前的问题中 我们注意到Thread Sleep阻塞线程参见 什么时候使用Task Delay 什么时候使用Thread Sleep https stackoverflow com questions 20082221 whe
  • c#Registry to XML无效字符问题

    我在尝试从注册表创建 XML 文件时遇到问题 在我的笔记本电脑 W7 64b 上它工作正常 生成了 xml 文件 但在另一台计算机 Xp 32b 上抛出异常 System ArgumentException 十六进制值 0x00 是无效字符
  • popen2()在c中如何工作?

    我尝试使用管道 叉子和 dup 在我的程序中执行 md5sume 命令 我发现总和代码运行成功 但我无法理解某些代码行 这是我的代码 int infp outfp char buf 128 if popen2 md5sum infp out
  • 使用经度和纬度查找给定距离内的所有附近客户

    我有一个包含客户经度和纬度的数据库 我有一个搜索表单 用户将在其中输入日志 纬度 距离下拉列表包含 50 英里 100 英里 当用户单击搜索时 我想编写一个 linq 查询从数据库中获取此距离半径内的所有客户 如何使用 C 和 linq 来
  • 未定义条件编译符号

    我无法让 Visual Studio 按照我的预期运行 我创建了 2 个配置文件 一个定义了符号 FOO 另一个定义了符号 BAR 我有这个代码 static class MyClass if FOO public static strin
  • 使用 cryptoapi CryptImportKey 导入公钥时出错

    我想将公钥 blob 导入到 CSP 但发生了错误 BYTE pbData 0xEB 0x2A 0x38 0x56 0x86 0x61 0x88 0x7F 0xA1 0x80 0xBD 0xDB 0x5C 0xAB 0xD5 0xF2 0x
  • 读取所有进程内存以查找字符串变量c#的地址

    我有 2 个用 C 编写的程序 第一个名为 ScanMe 的程序包含一个包含值 FINDMEEEEEEE 的字符串变量 以及一个值为 1546 22915487 的双精度变量 另一个名为 MemoryScan 的程序读取第一个程序的所有内存
  • 在 C# 中加密并在 Flex 中解密

    我需要解密 Flex 中的一些数据 这些数据是用 C 加密并写入文件的 为了简单起见 我选择使用 as3crypto As3 库和 Bruce Schneier C 库 AS3 as3加密链接 http code google com p
  • 如何带参数调用外部程序?

    我想在我的代码中调用一个 Windows 程序 并使用代码本身确定的参数 我不想调用外部函数或方法 而是调用 WinXP 环境中的实际 exe 或批处理 脚本文件 C 或 C 将是首选语言 但如果使用任何其他语言更容易完成此操作 请告诉我
  • 选择要重写哪个基类的方法

    鉴于以下情况 class Observer public virtual void Observe Parameter p 0 template
  • 在同一条线上铸造两次

    我在项目中看到了这段代码 b的类型是void void b int a int unsigned long b 这条线毫无意义吗 我的意思是 这与a int b在所有情况下 这可能会避免 64 位 Unix 系统上的编译器警告unsigne
  • Yield Return == IEnumerable 和 IEnumerator 吗?

    Is yield return实施的捷径IEnumerable and IEnumerator 是的 您可以在我的书 C in Depth 的第 6 章中找到更多相关信息 幸好第六章是免费提供 http www manning source
  • 如何从标准输入读取一行,阻塞直到找到换行符?

    我试图从命令行的标准输入一次读取任意长度的一行 我不确定是否能够包含 GNU readline 并且更喜欢使用库函数 我读过的文档表明getline应该可以工作 但在我的实验中它不会阻塞 我的示例程序 include
  • 在 C# 中将 ulong 映射到 long ?

    我正在尝试将 ulong 映射到 long 反之亦然 将 uint 映射到 int 反之亦然 如下所示 为了将值保存在具有签名类型的 MS SQL 数据库中仅限整数和大整数 我这样做是因为我必须检查 在数据库中 一个数字 uint ulon
  • 无法执行'x86_64-conda_cos6-linux-gnu-gcc':没有这样的文件或目录(pysam安装)

    我正在尝试安装 pysam 执行后 python path to pysam master setup py build 这个错误的产生是 unable to execute x86 64 conda cos6 linux gnu gcc
  • jquery ajax“发布”调用

    我是 jQuery 和 Ajax 的新手 并且在 发布 方面遇到问题 我正在使用 jQuery Ajax post 调用将数据保存到数据库 当我尝试保存数据时 它将 null 传递给我的 C 方法 jQuery 看起来像这样 functio

随机推荐

  • 对动作侦听器进行编程的常用方法是什么?

    我刚刚开始学习如何使用动作监听器 据我了解 它的工作原理如下 有一些类默认包含 addActionListener 方法 例如按钮类 使用此方法 我们向对象添加一个动作侦听器 例如 listenedObject addActionListe
  • 连接中出现未知的 SSL 协议错误

    我想将我的提交推送到 Bitbucket 存储库 但发生了此错误 Fatal unable to access https email protected myUsername myRepository git Unknown SSL pr
  • !in_array 在 PHP 中的使用 - 条件语句

    我想看看如何使用 in array 我有这段代码 但它不起作用 while row mysql fetch assoc result if in array row item output output row print json enc
  • WPF:选择组合框的可编辑文本框中的所有文本并将焦点设置为

    我有一个WPFComboBox其中有它的IsEditable属性绑定到视图模型 可以打开和关闭它 当它打开时 我想将焦点放在ComboBox并选择编辑中的所有文本TextBox 我看不出实现这一目标的最佳方法 我应该更换ControlTem
  • Python 正则表达式中的反斜杠转义序列和单词边界

    目前使用re sub re escape andrew SUB stringVar 预期行为 stringVar andrew re sub re escape andrew SUB stringVar Returns SUB 意外行为 s
  • 从 iPhone 发送帖子数据

    我想从 iPhone 发送帖子数据 我必须发送一本包含 8 个 k v 对的字典 K V 对 从 Iphone 发布所有这 8 个 K V 对的最佳方式是什么 我希望我应该在 URL 中仅传递 Id K V 对之一 其余的 K V 对应该通
  • 下标超出范围运行时错误9

    我正在创建一个函数 该函数从两个 Excel 文件中读取列标题 然后将这些列标题放入复选框中 以便用户可以检查他将使用哪些列 当我使用一个文件执行此操作时它可以工作 但是当我修改它以使用两个文件时 我收到 运行时错误 9 下标超出范围 并突
  • 如何从变量中的 id 获取 unicode 字符?

    我正在尝试生成一个包含每个 Unicode 变量的文件 我已经能够将 unicode 提高到 U FFFF 但是我需要将其提高到 U 231F4 我尝试过寻找答案 但是当符号 id 位于变量中而不是仅仅键入时 它们都不起作用 现在 我有这个
  • 如何从weblogic中jms模块的资源摘要表中获取jms队列列表?

    我需要打印 jms 模块的 jms 队列列表 我使用此代码来查找所需的队列并获取参数 但如何获取所有队列的名称并打印它们 Properties env new Properties env put Context PROVIDER URL
  • 使用 .htaccess 和 mod_rewrite 强制使用 SSL/https

    如何使用 PHP 中特定的 htaccess 和 mod rewrite 页面强制使用 SSL https 对于 Apache 您可以使用mod ssl强制使用 SSLSSLRequireSSL Directive 除非为当前连接启用了基于
  • 使用未分配的局部变量?

    Visual Studio 一直说Use of unassigned variable for iVal and iNumber 谁能告诉我哪里错了 这是一段代码 要求用户不断输入整数并将它们相加 直到用户想要停止为止 然后整数的总和显示在
  • 如何在使用 UI 生成器创建的渲染器中添加动态数据?

    如何在使用 UI 生成器创建的渲染器中添加动态数据 从 ui 构建器创建渲染并使用动态数据填充列表 protected boolean initListModelList List cmp cmp setModel new com code
  • itext - 添加无边框的 png 图像

    我想将以下 png 图像添加到我的 pdf 中 我使用以下代码来做到这一点 Image img PngImage getImage filename img setBorder Image NO BORDER img setAlignmen
  • Python3.5 和 FF48 的 Selenium WebDriver 出现“无法加载配置文件”错误

    我正在尝试将 Selenium 与 Python 一起使用 因此 我编写了以下代码并保存为名为的文件test py在工作目录中 用户 ykt68 seleniumwork ykt68 macbp15 seleniumwork pwd Use
  • Flutter for Linux 构建失败

    任何启用了 Linux 的 Flutter 应用程序的 Linux 构建都会导致以下错误 flutter run d linux Launching lib main dart on Linux in debug mode snap flu
  • 在 Windows 上安装 Tensorflow 错误

    Tensorflow 现已在 Windows 上可用 https developers googleblog com 2016 11 tensorflow 0 12 adds support for windows html 我使用pip安
  • 在oracle SP中用更大的数据类型替换varchar2

    我使用的是oracle版本10 PL SQL 中有使用 varchar2 变量的存储过程 该代码不断附加 varchar2 变量 当 varchar2 变量大小超过 32767 时 它无法附加任何更多值 现在我想将数据类型更改为long或c
  • 通过字符串过滤 json 数组 php

    我有一个 JSON 数组 使用json decode 设置数据 我正在寻找匹配数组中的某个项目 如果它匹配 我需要返回数组的整个 行 而不仅仅是像我找到的所有 filter array 片段那样的单个字段 有人能指出我正确的方向吗 调用前数
  • 使用 HttpURLConnection 进行 NTLM 身份验证

    有没有办法实现 NTLM 身份验证HttpURLConnection 目前我已经实现了它DefaultHttpClient and JCIFSEngine对于认证方案 我的灵感是 Android NTLM 身份验证 ksoap 和持久连接
  • sysinfo 系统调用未返回正确的 freeram 值

    我最近使用 sysinfo 系统调用编写了以下 C 代码来显示系统统计信息 有趣的是 sysinfo 结构的 freeram 变量不返回可用 RAM 的数量 而是返回当前 RAM 使用情况 我必须使用一种解决方法 通过从总内存中减去自由内存