【APUE】Chapter1 UNIX System Overview
这章内容就是“provides a whirlwind tour of the UNIX System from a programmer's perspective”。
其实在看这章内容的时候,已经先看过了Chapter7~Chapter13,回头再看看这样的综述介绍。
1.2 UNIX Architecture
主要就了解下面这张图即可:

在一般UNIX operating system中谁在哪层来调用谁。
1.3 Logging In
操作系统根据/etc/passwd中的信息来判断logging in信息是否匹配。
每一行代表一个用户登录信息,举例:

一般分为七个部分,用冒号分割:
login name
encrypted password
numeric user ID
numeric group ID
a comment field(这个field在例子中为空)
home directory
shell programm
1.4 Files and Directories
这个部分给出了第一份代码的例子。通过这个20行代码的例子,交代了不少东西:
man命令怎么用
头文件apue.h是干啥的
错误处理函数err_sys和err_quit函数都是干啥的
...
看了之后,给我的感觉是作者安排每个例子都是用心的,尤其在书一开始的地方都把一些书上之后常用的内容交代清楚,让人看的很明白。
1.5 Input and Output
(1)File Descriptors定义(先记着,有个念想): "normally small non-negative integers that the kernel uses to identify the files accessed by a process. Whenever it opens an existing file or creates a new file, the kernel returns a file descriptor that we use when we want to read or write the file."
(2)Standard Input , Standard Output & Standard Error
(3)Unbuffered I/O:open read write lseek close都是,并且这些函数都跟file descriptors协作。看到这里对书上的例子瞬间产生了一个误解:不是说是unbuffered了么,怎么还有read(STDIN_FILENO, buf, BUFFSIZE)这样的形式呢?我没有看过后面的部分,但是猜测这里说的unbuffered是不用fflush刷新缓冲区的,具体的后面再看。
(4)Standard I/O:就是提供了一个buffered的接口来调用各种unbuffered I/O函数,函数包含在头文件<stdio.h>中。
1.6 Programs and Processes
(1)Program:磁盘上的可执行文件;执行的时候先读入内存,然后由kernel调用exec函数执行之。
(2)Processes and Process ID:正在执行的program示例就叫process;unix系统的进程号非负整数
(3)Process Control:fork ,exec, waitpid
(4)Thread and Thread IDs
1.7 Error Handling
(1)一般遇到error了,unix系统就返回一个负整数;不同的负整数标示不同类型的错误
(2)<errno.h>头文件中有“symbol errno and constants for each value that errno can assume”,每个符号都以E开头;可以用man 3 errno来查看具体代表意思。
(3)考虑到多线程的情况,是贡献进程中的address space的,每个线程要有独立的errno就需要其他的定义方法,如下图:

具体参考的是/usr/includes/bits/errno.h头文件中的定义
(4)strerror函数把错误变量映射到错误信息字符串;perror可以接受一个参数(一般是program的名),并将出错信息输出到standard error上。
(5)error recovery。fatal error么有recovery action;nonfatal error有recovery action。跟资源相关的nonfatal error的recovery的策略分两种:一种是等;一种是重试。
1.8 User Identification
1.9 Sginals
Signals are a technique used to notify a process that some condition has occurred
1.10 Time Values
unix系统有两类不同的时间变量:
(1)Calendar time:1970.1.1零点开始到现在的秒数
(2)Process time:CPU time(在多线程那章的时候用到过)
注意相对时间和绝对时间;另外如果是多核的条件,时间统计时候与单核的情况可能不一样
1.11 System Calls and Library Functions
具体可以参照1.2中的那张图理解。对于application的级别来说,即可以直接用system call也可以用libarary functions。
书上举了一个内存分配的malloc(2)函数与sbrk(3)的例子。
【APUE】Chapter1 UNIX System Overview的更多相关文章
- 【APUE】Chapter10 Signals
Signal主要分两大部分: A. 什么是Signal,有哪些Signal,都是干什么使的. B. 列举了非常多不正确(不可靠)的处理Signal的方式,以及怎么样设计来避免这些错误出现. 10.2 ...
- 【APUE】Chapter15 Interprocess Communication
15.1 Introduction 这部分太多概念我不了解.只看懂了最后一段,进程间通信(IPC)内容被组织成了三个部分: (1)classical IPC : pipes, FIFOs, messa ...
- 【APUE】Chapter5 Standard I/O Library
5.1 Introduction 这章介绍的standard I/O都是ISOC标准的.用这些standard I/O可以不用考虑一些buffer allocation.I/O optimal-siz ...
- 【APUE】Chapter3 File I/O
这章主要讲了几类unbuffered I/O函数的用法和设计思路. 3.2 File Descriptors fd本质上是非负整数,当我们执行open或create的时候,kernel向进程返回一个f ...
- 【APUE】Chapter8 Process Control
这章的内容比较多.按照小节序号来组织笔记的结构:再结合函数的示例带代码标注出来需要注意的地方. 下面的内容只是个人看书时思考内容的总结,并不能代替看书(毕竟APUE是一本大多数人公认的UNIX圣经). ...
- 【转载】loadrunner使用system()函数调用Tesseract-OCR识别验证码遇到的问题
俗话说前人栽树,后人乘凉,此话一点不假,结合云层的一遍文章:http://bbs.51testing.com/thread-533920-1-1.html,知道还有一个Tesseract-OCR可以用 ...
- 【APUE】Chapter16 Network IPC: Sockets & makefile写法学习
16.1 Introduction Chapter15讲的是同一个machine之间不同进程的通信,这一章内容是不同machine之间通过network通信,切入点是socket. 16.2 Sock ...
- 【APUE】Chapter4 File and Directories
4.1 Introduction unix的文件.目录都被当成文件来看待(vi也可以编辑目录):我猜这样把一起内容都当成文件的原因是便于统一管理权限这类的内容 4.2 stat, fstat, fst ...
- 【APUE】Chapter17 Advanced IPC & sign extension & 结构体内存对齐
17.1 Introduction 这一章主要讲了UNIX Domain Sockets这样的进程间通讯方式,并列举了具体的几个例子. 17.2 UNIX Domain Sockets 这是一种特殊s ...
随机推荐
- PHP面试题分享与答案
由于之前的每一个问题都是一个比较大的知识点,作者希望可以尽量一一详细解答,如果有不足的地方欢迎大家补充和修改,同时借鉴牛人写的Mysql中算法的实现以及内存原理,Btree结构等. 1:MySQL数据 ...
- 使用MSF生成木马_入侵Windows
1>生成木马 (123.exe) -f 输出格式 -o 输出地址 2>启动msfconsole 3>进行设置&&启动攻击 4>木马运行&后 ...
- 记一次msfconsole_android渗透实验
1>查看本机IP 2>生成App木马 3>将生成的木马安装至手机 4>打开msfconsole 1, use exploit/multi/handler 加载模块. 2, ...
- 2018.11.8 Error contacting service. It is probably not running.
安装zookeeper-3.4.6的时候,启动正常没报错,但zkServer.sh status查看状态的时候却出现错误,如下: JMX enabled by default Using config ...
- 2018.10.2 Eclipse中如何测地修改一个we项目步骤
找到项目的web.xml文件 大概的路径如下: 修改xml文件中的display-name 节点的值 下一步就是切换工作目录 显示的效果 打开最后一个文件修改 接下来找到这个文件 是部署的时候用的 运 ...
- 【luogu P2324 [SCOI2005]骑士精神】 题解
题目链接:https://www.luogu.org/problemnew/show/P2324 不懂怎么剪枝,所以说,,我需要氧气.. 第一道A* // luogu-judger-enable-o2 ...
- 【题解】洛谷P3627 [APIO2009]抢掠计划(缩点+SPFA)
洛谷P3627:https://www.luogu.org/problemnew/show/P3627 思路 由于有强连通分量 所以我们可以想到先把整个图缩点 缩点完之后再建一次图 把点权改为边权 并 ...
- Android 初步-Android文件目录介绍
src:存放的是应用程序使用到的java文件. gen:系统自动生成的目录,不需要程序员进行修改,包含了R.java文件.该文件包含了 程序使用到的资源文件对应的唯一资源ID,注意:如果R文件生成错误 ...
- win7 bat copy 一个文件 到另外的文件夹内,路径得用引号哦
win 7 的 用引号 把路径引起来 ,但是win10 的可以不用哦 !
- Oracle PL/SQL中异常高级特性
在OraclePL/SQL语句块中exception的异常处理部分是非常重要的组成部分,它决定了在PL/SQL语句块内部可执行部分在发生异常错误时,程序是友好地提示:程序遇到某些错误而无法执行,还是抛 ...