今天开始写博客。尝试着分析源码。不写那么多废话,全写自己对源码的理解。
读了cat.c,网上找到了一个好文章:http://blog.csdn.net/mingdaotang/article/details/50446350
可惜,关键地方还是没看懂。
引用作者的一段:
读了cat.c,网上找到了一个好文章:http://blog.csdn.net/mingdaotang/article/details/50446350
可惜,关键地方还是没看懂。
引用作者的一段:
字符映射
要实现这个功能,就无法再简单的整页读写数据,中间需要再加一个处理的步骤:
按整页读出数据。
逐个字符的遍历输入缓冲区(inbuf),转换字符,写到输出缓冲区(outbuf)中。
按整页写数据。
循环上述过程直到输入文件末位。
要实现这个功能,就无法再简单的整页读写数据,中间需要再加一个处理的步骤:
按整页读出数据。
逐个字符的遍历输入缓冲区(inbuf),转换字符,写到输出缓冲区(outbuf)中。
按整页写数据。
循环上述过程直到输入文件末位。
上面作者这段,我根据程序,还是弄明白了。
作者的思路是:
cat -n a.c b.c - x.c
象上面要把四个文件显示出来,因此,作者在main中,
先处理选项,
再有一个循环,循环对每个文件进行显示
根据文件名,把文件打开
如果没有任何先项,
就调用simple_cat
否则
就调用cat
因为重点就在CAT这个子程序中,SIMPLE_CAT很简单。
在CAT中,大致是:
先从文件中读到INBUF
从INBUF中,逐字符处理,再写到OUTBUF
再将OUTBUF中内容,写到标准输出。
作者的思路是:
cat -n a.c b.c - x.c
象上面要把四个文件显示出来,因此,作者在main中,
先处理选项,
再有一个循环,循环对每个文件进行显示
根据文件名,把文件打开
如果没有任何先项,
就调用simple_cat
否则
就调用cat
因为重点就在CAT这个子程序中,SIMPLE_CAT很简单。
在CAT中,大致是:
先从文件中读到INBUF
从INBUF中,逐字符处理,再写到OUTBUF
再将OUTBUF中内容,写到标准输出。
关键是从INBUF中写到OUTBUF这段过程,太长了,真不好啃。博客的作者的解释,还是看不懂。无法把程序串起来。