实现more命令

在看了《Linux/UNIX系统编程手册》和APUE前几章之后发现缺少相应的实践,如果只是单纯的了解API并没有太大意义,因此决定跟随《UNIX/Linux编程实践教程》将书中的例子调通与理解透。然后再去啃APUE,效果应该会好很多。

书中第一章给出了more实现的第一版,由于书写与2004年,代码看上去有些“另类”,修改后如下:

编译方法是直接使用gcc more01.c,然后./a.out more.01.c /etc/passwd

或从标准输入中获取信息直接输入./a.out

下面代码有几点需要注意:

if ( (fp = fopen(* ++argv, "r&q......

[APUE]第四章文件和目录

本章内容较多,本文只记录在学习过程中所发现的问题,同时记录所需掌握的Linux方面知识.

文件类型

普通文件

目录文件

块特殊文件

字符特殊文件

FIFO

套接字

符号链接

这里要介绍下dos2unix命令,刚好前几天在工作中有所接触。

dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter)。DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以\n作为断行标志的,表示成十六进制就是 0A。DOS格式的文本文件在Linux底下......

[APUE]第三章文件I/O

Unix系统中大多数文件I/O只需用到五个函数:open、read、write、lseek、close。本章介绍的I/O是不带缓冲的,即:每个read和write都调用内核中的一个系统调用。它们不是ISO C的组成部分。

对于内核而言,所有打开的文件都通过文件描述符引用;

当打开或创建文件时,内核向进程返回一个文件描述符;

读写文件时,文件描述符将作为read和write的参数。

在 unistd.h中定义三个标准的文件描述符:

STDIN_FILENO (0)  标准输入

STDOUT_FILENO (1) 标准输出

STDERR_FILENO (2) 标准出错输出

文件......

[APUE]第二章UNIX标准及实现

这一章的阅读相对枯燥,20世纪80年代UNIX版本种类剧增以及他们之间的差别的扩大,导致很多用户呼吁对其进行标准化。

UNIX标准化介绍了ISO C IEEE POSIX Single UNIX Specification FIPS,这部分内容不详细总结。

UNIX系统实现介绍了 SVR4 4.4BSD Free BSD Linux Mac OSX Solaris.

UNIX系统中的“限制”,主要包括两类限制:

编译时限制,例如,短整型的最大值是多少。编译时限制可在头文件中定义,程序在编译时可包含这些头文件。

运行时限制,例如,文件名有多少个字符。运行时限制要求进程调......

[APUE]第一章UNIX基础知识

UNIX简介

操作系统的狭义定义,是将操作系统定义为一种控制计算机资源,提供程序运行环境的软件,通常我们称之为内核,内核提供接口供上层应用调用,也叫做System Call(系统调用)。同时,为了方便应用程序使用内核,通常都会有公用函数库,应用程序既可以使用系统调用,也可以使用公用函数库。系统调用和公用函数库实际上并不是同一个东西,但是对于开发者来说,可以当作同一个层,都可以使用C函数来调用。再向上,就是shell终端,作为人机交互部分,最外层则是应用程序。

而从广义上来说,操作系统就是一个包含了内核和必备系统软件的集合,这些软件是支持一个系统正常运转使用、人机交互的最小要求。

目前来说......