Unix环境高级编程第二版读书笔记

<unistd.h>的两个常量STDIN_FILENO, STDOUT_FILENO是POSIX标准的一部分, 他们指定了标准输入和标准输出的文件描述符,他们的典型值分别是0和1。该头文件包含了很多UNIX系统服务的函数原型。

stdin和stdout常量定义在<stdio.h>中,表示标准输入和标准输出文件。

UNIX环境高级编程中文第二版PDF高清版 下载地址 

1.6 程序和进程

1.程序

是存放在磁盘上,处于某个目录中的一个可执行文件。使用6个exec函数中的一个由内核将程序读入存储器,并使其执行。

2.进程

程序执行的实例process。某些操作系统用任务task表示被执行的程序。getpid()返回进程ID。

3.进程控制

fork(), exec(), waitpid()

4.线程和线程ID

通常一个进程只有一个控制线程,但是如果不同部分各使用一个控制线程,那么整个问题解决起来就容易很多。在一个进程内的所有线程共享同一地址空间,文件描述符,栈以及与进程相关的属性。因为他们能访问同意存储区,所以各线程在访问共享数据时需要采取同步措施以避免不一致性。

在一个进程中,我们用线程ID引用相应的线程。

在进程模型建立后很久,线程模型才被引入到unix系统中,这两个模型之间存在复杂的相互作用。

1.7 出错处理

unix函数出错时,常常返回一个负值,而整形变量errno通常被设置为含有附加信息的一个值。

文件<errno.h>中定义了符号errno以及可以赋予它的各种常量,这些常量都以字符E开头。

在支持线程的环境中,多个线程共享进程地址空间,每个线程都有属于它自己的局部errno以避免一个线程干扰另一个线程。

例如:linux支持多线程存取errno,将其定义为:

extern int *__errno_location(void);

$define errno (*__errno_location())

对于errno应当知道两条规则: 1,如果没有出错,则其值不会被一个例程清楚。2,任一函数不会将errno值设置为0.

c标准定义了两个函数,它们帮助打印出错信息

#include <string.h>

char *strerror(int errnum);

#include <stdio.h>

void perror(const char *msg)

1.8 用户标识

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwxfdd.html