linux c free源码,linux命令free源码解读:Procps free.c
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相关推荐
- java中用于运行字节码的命令_Java字节码指令
1. 简介 Java虚拟机的指令由一个字节长度的.代表着某种特定操作含义的数字(称为操作码)以及跟随其后的零至多个代表此操作所需参数(称为操作数)而构成. 由于Java虚拟机采用面向操作数栈而不是寄存 ...
- linux脚本参数获取时间戳,Linux系统date命令的参数及获取时间戳的方法
date指令相关用法示例 date 用法: date [OPTION]... [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] ...
- linux下free源码,linux命令free源码解读:Procps free.c
linux命令free源码解读 linux命令free源码解读:Procps free.c 作者:isayme 发布时间:September 26, 2011 分类:Linux 我们讨论的是linux ...
- 【SRE笔记 2022.9.7 linux进程相关命令及源码包安装】
SRE笔记 2022.9.7 源码包 定义 源码包安装 优缺点 优点 缺点 获取 安装 C语言和开发 nginx安装示例 基础环境准备 gcc make wget 下载源码包 解压源码包,进入目录 ( ...
- maven下载源码linux,Maven 下载 源码和javadoc 命令
摘要:我们在写代码时候,往往是想查看一下源码,看看源码的一些细节内容.一般情况下,在IDE(如eclipse)中近仅仅只需按住ctrl+ 点击对应的方法即可进入对应的源码部分.但是有些时候很多依赖项并 ...
- vc6可编译的 linux 源码,Linux 下源码编译FFMEG
1. 安装依赖关系 $ sudo apt-get update $ sudo apt-get -y install autoconf automake build-essential libass-d ...
- 菜鸟学Linux 第030篇笔记 yum使用,源码编译安装
菜鸟学Linux 第030篇笔记 yum使用,源码编译安装 yum yellow updatet modified c/s: client, server yum repository 文件服务定义 ...
- linux编译android源码,ubuntu16.04 Android源码下载编译
本次编译源码的电脑为Ubuntu 16.04,4核 + 4G内存. 注. 对于电脑配置低的建议不要编译7.0以上的版本,就像我这台电脑,基本编译7.0以上都会报内存不足问题,因为在7.0版以上andr ...
- Linux环境下ANTs软件安装(基于源码)
Linux环境下ANTs软件安装(基于源码) 1.下载Cmake 在命令行里运行: 2.下载ITK 在命令行里运行: 3.ANTs安装 (1)在命令行里运行: (2)编译完之后如果在 antsbin ...
最新文章
- CF1385E Directing Edges (拓扑排序判断环)
- linux软件安装不完全傻瓜手册
- python 信号模块 signal
- linux如何修改主机名
- Winform中设置ZedGraph的颜色填充使用Fill
- 对Group By 语句的一次优化过程
- iBatis入门和开发环境搭建
- 趣味娱乐小程序源码多流量主 趣味制作/藏头诗/隐藏图
- SpringBoot目录
- 零基础掌握区块链关键概念
- pure-ftpd搭建教程
- 从今天起,我不再使用 Java Date了!
- Qt之FTP上传/下载
- 给力大辞典v3.0 免费安装版【包含18部字典词典】
- 海军领域搜狗细胞词库
- Linux篇 三、香橙派Zero2搭建Qt环境
- python 发送匿名邮件或无发件人
- vmware 恢复快照时出错
- Google.com.hk 更名 Google 中国,谷歌已经不复存在?
- SQL必知必会1 查询部分 P1-P129
热门文章
- iphone3开发基础教程中文版高清PDF全集迅雷高速下载
- 从【为什么要用sigmoid函数】到真的懂【逻辑回归】
- sparklines插件_sparklines——迷你图插件
- memoQ | Excel内容做成翻译记忆库
- CAD快速看图,一键快速查看CAD图纸
- 2021,shell脚本手机微信8.0,微信运动,自动点赞小伙伴的一些总结
- reorg_cls_centerness.cpp:4658:74: error: invalid conversion from ‘int’ to ‘PyObject* {aka _object*}’
- 数据脱敏python
- 程序员职业发展和晋升指南
- Android之Dalvik 、ART