Unix/Linux系统编程:从编写who命令开始

需积分: 3 2 下载量 156 浏览量 更新于2024-08-02 收藏 833KB PDF 举报
"关于系统编程的教程" 这篇教程聚焦于系统编程,主要以C语言为基础,旨在教授如何进行系统级别的编程工作。教程包含了多个章节,如用户管理、文件操作和联机帮助,通过实际编写像`who`和`cp`这样的命令来实践学习。 在第二章“用户、文件操作与联机帮助”中,教程首先介绍了编写`who`命令。通过这个过程,学习者将了解有关文件、用户、时间戳以及Unix系统的自我文档化特性。编写`who`命令是为了列出当前登录到系统的用户信息,包括登录名、终端、登录时间和登录地址。这一部分会引导学习者通过运行命令、查看手册(man page)以及分析现有实现来理解命令的工作原理。 在讨论基本系统数据类型时,教程强调了在Unix/Linux系统中,为了可移植性和开发效率,通常会在`sys/types.h`这样的头文件中定义一些基本数据类型,如`_t`结尾的typedef。这些数据类型使得程序员无需关心底层系统的具体实现细节,提高了代码的跨平台性。教程还列举了一些常见基本系统数据类型的示例,进一步加深对这些类型的理解。 编写`who`命令的步骤包括:首先了解命令的功能(man 1 who),分析现有的实现(man -k key),然后设计程序,确定所需的系统调用(man 2/3)。这涉及到了对`utmp`文件格式的理解,因为`who`命令的信息来源于`utmp`文件,学习者需要查阅`man 5 utmp`手册页,并可能需要阅读如`utmp.h`这样的头文件来理解数据结构和接口。 通过这个教程,学习者不仅能够掌握编写系统工具的基本技巧,还能深入理解Unix/Linux系统的内部工作原理,包括文件系统、进程管理、错误处理等核心概念。此外,通过实践编程,学习者还能提升调试和测试能力,最终完成程序的发布(releasing)。 这是一个全面且实践性强的系统编程教程,适合那些希望深入理解操作系统并能编写系统级工具的C语言开发者。通过学习,开发者将具备创建和维护系统工具的能力,同时增强对Unix/Linux内核机制的认识。