《UNIXLinux程序设计教程》一第1章 UNIX导论

第1章

UNIX导论
UNIX是一个“历史悠久”的操作系统。在开始讲述UNIX环境程序设计方法之前,我们先回顾UNIX的诞生、成长和发展历程,介绍UNIX发展过程中出现的若干标准。回顾UNIX的发展历史,有助于我们了解它具有如此强大生命力的原因,并把握它未来的发展方向;了解UNIX的标准,可以使我们理解和区分UNIX的不同实现与版本之间的区别,并编写出可移植性更好的程序。
随后,作为后继章节的基础,本章将讲述UNIX的一些基本概念,并介绍与UNIX全系统有关的一些内容,例如系统信息、系统能力限制、错误处理等。

时间: 2024-09-11 00:09:45

《UNIXLinux程序设计教程》一第1章 UNIX导论的相关文章

《UNIXLinux程序设计教程》一导读

前言 十年前,我们出版了<UNIX程序设计教程>(清华大学出版社).十年来,影响UNIX编程接口的规范和标准发生了较大变化,当时写书参照的"Single UNIX Specification 2"现在已发展到了"Single UNIX Specification 4",而若干分离独立的规范和标准,包括Single UNIX Specification,现在都已经统一在POSIX.1-2008标准之下.同时,随着Linux系统的成熟和发展,UNIX系统已不

《UNIXLinux程序设计教程》一第3章-3.0 低级输入输出

第3章-3.0 低级输入输出 标准I/O函数提供了丰富.便捷的输入输出方法,但有时程序员并不需要标准I/O函数提供的数据转换和缓冲处理,而希望使用自己的方法.例如,当需要用很大的缓冲来读二进制文件,或需要对特定设备(如终端)进行控制操作,或需要传递文件描述字给子进程(子进程可以用继承的文件描述字创建自己的流,但不能直接继承流)时,便需要使用UNIX的输入输出系统调用.这些系统调用习惯上称为低级I/O函数. 低级I/O函数对文件描述字进行操作,其中有一些是实现标准I/O函数的初等函数:另外一些则执

《UNIXLinux程序设计教程》一2.1 UNIX 输入输出基本概念

2.1 UNIX 输入输出基本概念 在任何一种操作系统中,程序开始读写一个文件的内容之前,必须首先在程序与文件之间建立连接或通信通道,这一过程称为打开文件.打开一个文件的目的可能是要读其中的数据,也可能是要往其中写入数据,还可能是既要读又要写数据. UNIX系统有两种机制用于描述程序与文件的这种连接:一种称为文件描述字,另一种称为流.因此,系统中关于I/O的函数也分为两大类:一类针对文件描述字操作,另一类针对流操作. 当用流或描述字I/O函数打开一个文件时,它们分别返回一个流或文件描述字,然后便

《UNIXLinux程序设计教程》一第2章-2.0 标准输入输出

第2章-2.0标准输入输出输入输出(I/O)是任何一种编程环境中最基本的功能.本章首先讨论UNIX系统中输入输出的基本概念,然后介绍标准输入输出函数.以后各章我们将介绍更深入的输入输出概念.

《UNIXLinux程序设计教程》一1.1 UNIX简史

1.1 UNIX简史 UNIX早在MS DOS.Windows出现之前就已经诞生了,到现在已有四十多年的历史. 1.1.1 UNIX的诞生 1965年麻省理工学院的MAC课题组和通用电气公司一起启动了一个项目-开发一个新的称为Multics的多用户.交互式操作系统.Multics的目的是向大用户团体提供同时计算和存储的能力.在当时批处理系统为主流的情况下,这是一个创新的概念.此后不久,贝尔实验室的计算科学研究中心也加入了这一计划.但在1969年,这个研究组认为开发Multics需要更长的时间,于

《UNIXLinux程序设计教程》一3.7 非阻塞I/O

3.7 非阻塞I/O 前面几节已介绍了完成各种I/O的系统调用,如read().write().open()等,这些系统调用在默认情形下均是阻塞的,也就是说,调用必须等待操作完成,即读写到数据,才能返回.但在有些应用中往往还有需要非阻塞I/O的情形.本节我们讨论使得这些调用成为非阻塞的方法. UNIX系统调用根据阻塞还是非阻塞分为两类:一类是所谓的"慢"系统调用,其他的则归为另一类.慢系统调用是以下有可能被永久阻塞的调用: 调用read()读管道.终端设备或网络设备文件时,如果数据不出

《UNIXLinux程序设计教程》一3.1 文件描述字的打开、创建和关闭

3.1 文件描述字的打开.创建和关闭 函数open()或create()用于打开或创建一个文件描述字. #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open (const char * filename, int flags [, mode_t mode]); int create (const char * filename, mode_t mode); open()用于打开或

《UNIXLinux程序设计教程》一3.2 read()和write()函数

3.2 read()和write()函数 对文件描述字进行基本输入输出操作的函数是read()和write(). #include <unistd.h> ssize_t read (int filedes, void * buffer, size_t nbytes); ssize_t write (int filedes, const void * buffer, size_t nbytes); read()从已打开的.与文件描述字filedes相连的文件中读至多nbytes个字节的数据放到b

《UNIXLinux程序设计教程》一1.2 标准

1.2 标准 UNIX变体的激增产生了许多兼容性问题,特别是各种商业UNIX变体的出现使情况变得更加复杂.系统V和BSD在许多方面不同-它们有不同且互不兼容的物理文件系统.网络机制和虚拟内存结构.这些不同中有一些限制在内核设计和实现上,但另一些出现在程序设计接口层,这导致没有一个复杂的应用程序能够不加修改地同时运行于系统V和BSD系统.另一方面,商业变体常常带有各自的增值特征,应用程序员常常搞不清它们.结果,为了保证程序在各种不同的UNIX上都能工作,程序员不得不付出极大的努力.这种情形导致了对