linux命令free源码解读

linux命令free源码解读:Procps free.c

作者:isayme 发布时间:September 26, 2011 分类:Linux

我们讨论的是linux命令free的实现。

free命令是随软件包procps一同发布的。完整的代码下载链接:下载procps

首先找到free命令的实现文件free.c,直接看main函数部分:

while( (i = getopt(argc, argv, "bkmglotc:s:V") ) != -1 )

switch (i) {

case 'b': shift = 0; break;

case 'k': shift = 10; break;

case 'm': shift = 20; break;

case 'g': shift = 30; break;

case 'l': show_high = 1; break;

case 'o': old_fmt = 1; break;

case 't': show_total = 1; break;

case 's': pause_length = 1000000 * atof(optarg); break;

case 'c': count = strtoul(optarg, NULL, 10); break;

case 'V': display_version(); exit(0);

default:

fwrite(help_message,1,strlen(help_message),stderr);

return 1;

}

很明显,这是检查命令输入参数的。如判断是free -k还是free -m等,很简单的代码。显然这不是本文的重点。

继续看紧接着的代码:

do {

meminfo();

printf(" total used free shared buffers cached\n"); printf(

"%-7s %10Lu %10Lu %10Lu %10Lu %10Lu %10Lu\n", "Mem:",

S(kb_main_total),

S(kb_main_used),

S(kb_main_free),

S(kb_main_shared),

S(kb_main_buffers),

S(kb_main_cached)

);

}

代码不是完整的整块,后面的内容都是根据上段代码获取的参数有选择的输出相应的信息。我们假设调用free命令的时候未添加任何参数,那么后面的代码都不是那么重要了。

代码中,先是调用meminfo()函数,然后直接printf。简洁,明了。很明显meminfo函数中对printf函数中读取的变量进行了初始化。所以,我们的任务是meminfo()。首先是查看meminfo代码:

linux下free源码,linux命令free源码解读:Procps free.c相关推荐

  1. linux常用调试,linux下gdb常用的调试命令

    用gdb调试程序时,常常很困惑一些命令的使用,要么是不知道这个命令,要么忘了命令的使用方法.接下来是小编为大家收集的linux下gdb常用的调试命令,希望能帮到大家. linux下gdb常用的调试命令 ...

  2. Linux下dpkg的用法,linux中管理包的apt和dpkg命令用法

    1,apt-get命令 apt-get是debian,ubuntu发行版的包管理工具,与红帽中的yum工具非常类似,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索.安装.升级.卸 ...

  3. Linux下常见的文本处理命令

    众所周知,在Linux下"一切皆文件"的原则,一切配置文件都可以以文本的方式进行编辑.存储.故对文本文件的操作能力,决定着你是否能够在Linux下操纵自如.今天,就写下几个关于Li ...

  4. linux 更新软件命令 失败,对linux下软件(库)的更新命令详解

    在ubuntu服务器下安装包的时候,经常会用到sudo apt-get install 包名 或 sudo pip install 包名,那么两者有什么区别呢? 1.区别 pip用来安装来自PyPI( ...

  5. Linux下关于snmp的snmpwalk命令

    最近需要在Linux下使用Snmp的snmpwalk命令读取一些设备信息,本机已安装SNMP但是在执行命令的时候却提示:"-bash: snmpwalk: command not found ...

  6. (转载)linux下的find文件查找命令与grep文件内容查找命令

    linux下的find文件查找命令与grep文件内容查找命令 转载于和感谢:linux下的find文件查找命令与grep文件内容查找命令 目录 1.前言 1.1 find命令和grep命令的区别 2. ...

  7. linux下挂载和卸载的命令的用法:mount 、umount

    linux下挂载和卸载的命令的用法:mount .umount 将Windows C:盘(hda1)安装在Linux文件系统的/winsys目录下, 命令是:mount /dev/had1 /wins ...

  8. linux为什么用tar压缩,linux下tar压缩和解压命令用法详解

    linux下tar压缩和解压命令用法详解 2017-03-25 14:06 分享人:老牛 将/usr/local/test目录下所有文件仅打包,不压缩到 /usr/local/auto_bak/目下 ...

  9. linux如何在a休息时运行b,Linux下如何优雅地修正命令?

    原标题:Linux下如何优雅地修正命令? 来源:公众号[编程珠玑] 作者:守望先生 ID:shouwangxiansheng 如何快速纠正你的linux命令?我们在输入命令的时候,难免会出现输入命令错 ...

  10. Linux下几种文件传输命令 sz rz sftp scp

    vbs自动启动程序 64位系统编译的程序,在32位系统中运行会有问题 Linux下几种文件传输命令 sz rz sftp scp 2011-10-28 16:08:47|  分类: 默认分类 |  标 ...

最新文章

  1. 手机屏幕的物理分辨率和逻辑分辨率
  2. 使用三层架构实现简单的MVC登陆操作!并实现基本的增删改查功能!!
  3. [转]ghost手动备份及遇见的问题
  4. 【 C 】翻译与执行
  5. 《SQL Server企业级平台管理实践》读书笔记——关于SQL Server数据库的备份方式...
  6. C# addin 开发心得记录
  7. C++ TR1、TR2与boost的关系
  8. 浅谈.NET 6 中 gRPC 的最新功能
  9. 2016 hctf fheap 题解
  10. 【转载】安装pip、pyinstaller并将py脚本打包成exe文件
  11. 本地使用TensorBoard
  12. 一个优秀的测试如何在敏捷开发中体现自己的价值?
  13. hibernate反向工程
  14. 敢不敢做一个复杂的人
  15. python random函数sample_Python random.sample()用法及代码示例
  16. 设置按峰值带宽计费_一个公式告诉你CDN适合带宽计费还是流量计费
  17. IPFS李鑫:fil币2021年价格预测
  18. 期末前端web大作业:餐饮美食网站设计与实现——餐厅响应式网站制作html+css+javascript+jquery+bootstarp
  19. JSP学生考勤管理系统考勤管理系统jsp学生迟到早退考勤查询系统(考勤管理系统源码)
  20. Java图片加文字水印

热门文章

  1. BZOJ 1003[ZJOI2006]物流运输(SPFA+DP)
  2. xpath选择器简介及如何使用
  3. Python学习笔记3——三大结构:顺序,分支,循环3
  4. MySQL 学习资料汇总
  5. 【Spring】bean的作用域(@Scope) - singleton、prototype
  6. 数据结构-线性表的顺序结构
  7. Linux socket TIME_WAIT 优化
  8. 桥接模式和路由模式区别_【微课堂】路由器设置:桥接模式vs路由模式
  9. c++判断奇偶_常用的数据差错控制技术(2) 奇偶校验
  10. 大学计算机专业全英文论文,5计算机专业 外文文献 英文文献 外文翻译 jsp应用框架 中英对照 大学学位论文.doc...