Linux 的编程常识(转)
http://www.aka.org.cn/Lectures/002/Lecture-2.1.1/basic.html
标准 (ANSI C, POSIX, SVID, XPG, ...)
函数库和系统调用
在线文档 (man, info, HOW-TO, ...)
C 语言编程风格
库和头文件的保存位置
共享库及其相关配置
众所周知,C 语言并没有为常见的操作,例如输入/输出、内存管理,字符串操作等提供内置的支持。 相反,这些功能一般由标准的“函数库”来提供。GNU 的 C 函数库,即 glibc,是 Linux 上最重要的 函数库,它定义了 ISO C 标准指定的所有的库函数,以及由 POSIX 或其他 UNIX 操作系统 统变种指定的附加特色,还包括有与 GNU 系统相关的扩展。目前,流行的 Linux 系统使用 glibc 2.0 以上的版本。glibc 基于如下标准:
除 glibc 之外,流行的 Linux 发行版中还包含有一些其他的函数库,这些函数库具有重要地位, 例如:
系统调用是操作系统提供给外部程序的接口。在 C 语言中,操作系统的系统调用通常通过 函数调用的形式完成,这是因为这些函数封装了系统调用的细节,将系统调用的入口、参数以及 返回值用 C 语言的函数调用过程实现。在 Linux 系统中,系统调用函数定义在 glibc 中。
谈到系统调用时,需要注意如下几点:
有关系统调用我们将在以后详细讲述。
man,即 manunal,是 UNIX 系统手册的电子版本。根据习惯,UNIX 系统手册通常分为 不同的部分(或小节,即 section),每个小节阐述不同的系统内容。目前的小节划分如下:
其他手册小节:
手册页一般保存在 /usr/man 目录下,其中每个子目录(如 man1, man2, ..., manl, mann) 包含不同的手册小节。使用 man 命令查看手册页。
man 命令行:
man [-acdfFhkKtwW] [-m system] [-p string] [-C config_file] [-M path] [-P pager] [-S section_list] [section] name
常用命令行:
$ man open
$ man 7 man
$ man ./myman.3
Linux 中的大多数软件开发工具都是来自自由软件基金会的 GNU 项目,这些工具软件 件的在线文档都以 info 文件的形式存在。info 程序是 GNU 的超文本帮助系统。
info 文档一般保存在 /usr/info 目录下,使用 info 命令查看 info 文档。
要运行 info,可以在 shell 提示符后输入 info,也可以在 GNU 的 emacs 中键入 Esc-x 后跟 info。
info 帮助系统的初始屏幕显示了一个主题目录,你可以将光标移动到带有 * 的主题菜单上面,然后按回车键进入该主题,也可以键入 m,后跟主题菜单的名称而进入该主题。例如,你可以键入 m,然后再键入 gcc 而进进入 gcc 主题中。如果你要在主题之间跳转,则必须记住如下的几个命令键:* n:跳转到该节点的下一个节点;* p:跳转到该节点的上一个节点;* m: 指定菜单名而选择另外一个节点;* f:进入交叉引用主题;* l:进入该窗口中的最后一个节点;* TAB:跳转到该窗口的下一个超文本链接;* RET:进入光标处的超文本链接;* u:转到上一级主题;* d:回到 info 的初始节点目录;* h:调出 info 教程;* q:退出 info。
#DEMO#
可供用户参考的联机文档的另一种形式是 HOWTO 文件,这些文件位于系统的 /usr/doc/HOWTO 目录下。 HOWTO 文件的文件名都有一个 -HOWTO 后缀,并且都是文本文件。
每一个 HOWTO 文件包含 Linux 某一方面的信息,例如它支持的硬件或如何建立一个引导盘。
要想查看这些文件,进入 /usr/doc/HOWTO 目录,使用 more 命令,具体形式如下:
$ cd /usr/doc/HOWTO; more topic-name-HOWTO
另外,HOWTO 文档还有其他格式的文件,例如 HTML 和 PS 等,保存在 /usr/doc/HOWTO/other-formats 下。
Linux 的内核文档一般包含在内核源代码中,目录如下:/usr/src/linux-2.x.x/Documentation
/usr/doc 目录下包含有大量与特定软件或函数库相关的说明性文档。
编写这一小节的目的是提醒大家在编程过程中注意编程风格。如果你只是在编写一些小的练习程序,程序 只有一两百行长的话,编程风格可能并不重要。然而,如果你和许多人一起进行开发工作,或者,你希望 在过一段时间之后,还能够正确理解自己的程序的话,就必须养成良好的编程习惯。在诸多编程习惯当中 ,编程风格是最重要的一项内容。
良好的编程风格可以在许多方面帮助开发人员。如果你阅读过 Linux 内核源代码的话,可能会对程序的 优美编排所倾倒。良好的编程风格可以增加代码的可读性,并帮助你理清头绪。如果程序非常杂乱,大 概看一眼就该让你晕头转向了。编程风格最能体现一个程序员的综合素质。
许多读者可能对 Windows 所推崇的匈牙利命名法很熟悉。这种方法定义了非常复杂的函数、变量、类型 等的命名方法,典型的命名方法是采用大小写混写的方式,对于变量名称,则采用添加前缀的办法来表示 其类型,例如:
char szBuffer[20];
int nCount;
利用 sz 和 n 分别代表字符串和整数。为了表示一个变量名称,采用如下的变量名称是可能的:
int iThisIsAVeryLongVariable;
在 Linux 中,我们经常看到的是定义非常简单的函数接口和变量名称。在 Linux 内核的源代码中,可以看 到 Linux 内核源代码的编码风格说明(/ Documentation/CodingStyle)。UNIX 系统的一个 特点是设计精巧,并遵守积木式原则。C 语言最初来自 UNIX 操作系统,与 UNIX 的设计原则一样, C 语言被广泛认可和使用的一个重要原因是它的灵活性以及简洁性。因此,在利用 C 语言编写程序时, 始终应当符合其简洁的设计原则,而不应当使用非常复杂的变量命名方法。Linus 为 Linux 内核定义 的 C 语言编码风格要点如下:
![]()