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代码:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值