Linux编程概念
这一节主要展现一个关于Linux环境提供的服务的简要概览。所有的Unix系统,包括Linux系统,都提供了一个功能的抽象和接口集合。事实上,这个共同点定义了Unix。如对文件和进程的抽象、管道和套接字管理的接口等等,都是Unix的核心。
这个概览假定你已经熟悉了Linux环境:可以熟练使用shell,使用基本命令,编译简单的C程序。这些并不是Linux的概览,也不是Linux编程环境的内容,而是进程Linux系统编程的最基本的知识。
1. 文件和文件系统
文件是Linux中最基本和重要的抽象。Linux遵循一切皆是文件的理念()。因此,很多的交互工作时通过读取和写入文件来完成的,就算问题的目标并不是你日常所想的文件。
文件必须打开才能被访问。文件可以以只读的方式或者只写的方式打开,或者两者兼有。一个打开的文件通过唯一的文件描述符进行引用,该描述符是打开文件的元数据至其本身的映射。在Linux内核中,这个描述符称为文件描述符,用一个整数表示(C语言中的类型为 int ),简写为 fd 。文件描述符在用户空间中共享,允许用户程序用文件描述符直接访问文件。大部分的Linux系统编程包括对文件描述符的打开,关闭等操作。
2. 普通文件
我们常常说起的文件,就是Linux中的普通文件。一个普通文件包含以线性字节数组方式组织的数据,通常也称为字节流。在Linux中,文件没有更进一步的组织结构或者格式。字节可以是任何值,也可以以任何方式被组织在一个文件中,在系统级别,除了字节流,Linux并没有要求文件有特定的结构。某些操作系统,如VMS,提供了高度结构化的文件,支持如记录这样的概念。Linux并没有做这样的处理。