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 c free源码,linux命令free源码解读:Procps free.c相关推荐

  1. java中用于运行字节码的命令_Java字节码指令

    1. 简介 Java虚拟机的指令由一个字节长度的.代表着某种特定操作含义的数字(称为操作码)以及跟随其后的零至多个代表此操作所需参数(称为操作数)而构成. 由于Java虚拟机采用面向操作数栈而不是寄存 ...

  2. linux脚本参数获取时间戳,Linux系统date命令的参数及获取时间戳的方法

    date指令相关用法示例 date 用法: date [OPTION]... [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] ...

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

    linux命令free源码解读 linux命令free源码解读:Procps free.c 作者:isayme 发布时间:September 26, 2011 分类:Linux 我们讨论的是linux ...

  4. 【SRE笔记 2022.9.7 linux进程相关命令及源码包安装】

    SRE笔记 2022.9.7 源码包 定义 源码包安装 优缺点 优点 缺点 获取 安装 C语言和开发 nginx安装示例 基础环境准备 gcc make wget 下载源码包 解压源码包,进入目录 ( ...

  5. maven下载源码linux,Maven 下载 源码和javadoc 命令

    摘要:我们在写代码时候,往往是想查看一下源码,看看源码的一些细节内容.一般情况下,在IDE(如eclipse)中近仅仅只需按住ctrl+ 点击对应的方法即可进入对应的源码部分.但是有些时候很多依赖项并 ...

  6. vc6可编译的 linux 源码,Linux 下源码编译FFMEG

    1. 安装依赖关系 $ sudo apt-get update $ sudo apt-get -y install autoconf automake build-essential libass-d ...

  7. 菜鸟学Linux 第030篇笔记 yum使用,源码编译安装

    菜鸟学Linux 第030篇笔记 yum使用,源码编译安装 yum yellow updatet modified c/s: client, server yum repository 文件服务定义 ...

  8. linux编译android源码,ubuntu16.04 Android源码下载编译

    本次编译源码的电脑为Ubuntu 16.04,4核 + 4G内存. 注. 对于电脑配置低的建议不要编译7.0以上的版本,就像我这台电脑,基本编译7.0以上都会报内存不足问题,因为在7.0版以上andr ...

  9. Linux环境下ANTs软件安装(基于源码)

    Linux环境下ANTs软件安装(基于源码) 1.下载Cmake 在命令行里运行: 2.下载ITK 在命令行里运行: 3.ANTs安装 (1)在命令行里运行: (2)编译完之后如果在 antsbin ...

最新文章

  1. CF1385E Directing Edges (拓扑排序判断环)
  2. linux软件安装不完全傻瓜手册
  3. python 信号模块 signal
  4. linux如何修改主机名
  5. Winform中设置ZedGraph的颜色填充使用Fill
  6. 对Group By 语句的一次优化过程
  7. iBatis入门和开发环境搭建
  8. 趣味娱乐小程序源码多流量主 趣味制作/藏头诗/隐藏图
  9. SpringBoot目录
  10. 零基础掌握区块链关键概念
  11. pure-ftpd搭建教程
  12. 从今天起,我不再使用 Java Date了!
  13. Qt之FTP上传/下载
  14. 给力大辞典v3.0 免费安装版【包含18部字典词典】
  15. 海军领域搜狗细胞词库
  16. Linux篇 三、香橙派Zero2搭建Qt环境
  17. python 发送匿名邮件或无发件人
  18. vmware 恢复快照时出错
  19. Google.com.hk 更名 Google 中国,谷歌已经不复存在?
  20. SQL必知必会1 查询部分 P1-P129

热门文章

  1. iphone3开发基础教程中文版高清PDF全集迅雷高速下载
  2. 从【为什么要用sigmoid函数】到真的懂【逻辑回归】
  3. sparklines插件_sparklines——迷你图插件
  4. memoQ | Excel内容做成翻译记忆库
  5. CAD快速看图,一键快速查看CAD图纸
  6. 2021,shell脚本手机微信8.0,微信运动,自动点赞小伙伴的一些总结
  7. reorg_cls_centerness.cpp:4658:74: error: invalid conversion from ‘int’ to ‘PyObject* {aka _object*}’
  8. 数据脱敏python
  9. 程序员职业发展和晋升指南
  10. Android之Dalvik 、ART