coreutils-4.5.1/false.c代码阅读

coreutils-4.5.1/false.c代码阅读
自己还是要读源码,提长自己的功力。网上购C标准库,没有了。淘宝上二手书几百元一本,估计现在学c的人也多了。
我真想读ruby0.49,可以连gcc都安装不上。没办法。还是读简单的。
把看代码看成一种生活方法,不是为了在他人前装13。
从最简单的看起
cat *.c | wc -l |sort -n -k1
先看false.c
我最近不停安装gcc,想安装老版本,怕gcc不行了,于是先在src目录下,
sudo make
下,用系统自带的工具。发现报有错误,也不管了。自己再在false.c中加几句printf,看能否有效果,再本地执行一下编译后的文件。
./false
发现有效果了。
于是就边改边读。
加一句usage(15),发现果然弹出了那个消息框,再
echo $?
返回值是15,我随便再改成
usage(1112)
返回值就不对了,左想右想在usage()中已经有exit(status)了,为什么返回值不是1112呢?后来想,可能是整数超过了。
不然为何小整数可以,大的整数就不可以了呢?

在main()中
有setlocale();
bindtextdomain();
textdomain();
这几个函数不知道定义,在包含的头文件中找,没找到。于是想起,自己以前曾经ctags过一把,于是在vim中添加一行:
tags=./tags;../lib/tags
再ctrl+]  跳到函数的定义处,发现更晕了。

反正每个命令的源码前,都有这几句,我以前,为了追求数量,一律略过了。现在回头想把它看懂,居然看不懂。也许要通过makefile找线索。想起来,又想偷懒了。

./false  --help
的实现逻辑终于看懂了,他的意思是,如果你传了两个参数,并且 
args[0]给命令名,argv[1]是--help,若STREQ(argv[1],"--help")就显示usage
哈哈,看代码也不能太急,要有一个沉稳的心态,我着相了。

猜你喜欢

转载自blog.csdn.net/woshiyilitongdouzi/article/details/83140927