UNIX环境高级编程
文章平均质量分 90
ZhichengYee
这个作者很懒,什么都没留下…
展开
-
《UNIX环境高级编程》十四高级I/O读书笔记
1、非阻塞I/O(同步)系统调用分成两类:“低速”系统调用和其他。低速系统调用是可能会使进程永远阻塞的一类系统调用。非阻塞I/O使我们可以发出open、read和write这样的I/O操作,并使这些操作不会永远阻塞。如果这种操作不能完成,则调用立即出错返回,表示该操作如继续执行将阻塞。对于一个给定的文件描述符,有两种为其指定非阻塞I/O的方法: (1)如果调用open获得描述符,则可指定O_NON原创 2016-08-16 00:14:10 · 521 阅读 · 0 评论 -
《UNIX环境高级编程》十二线程控制读书笔记
1、线程限制2、线程属性pthread接口允许我们通过设置每个对象关联的不同属性来细调线程和同步对象的行为。 (1)每个对象与它自己类型的属性对象进行关联。 (2)有一个初始化函数,把属性设置为默认值。 (3)还有一个销毁属性对象的函数。如果初始化函数分配了与属性对象关联的资源,销毁函数负责释放这些资源。 (4)每个属性都有一个从属性对象中获取属性值的函数。 (5)每个属性都有一个设置属性原创 2016-08-14 16:09:39 · 704 阅读 · 0 评论 -
《UNIX环境高级编程》十一线程读书笔记
1、线程概念 典型的UNIX进程可以看成只有一个控制线程:一个进程在某一时刻只能做一件事情。有了多个控制线程以后,在程序设计时可以把进程设计称在某一时刻能够做不止一件事,每个线程处理各自独立的人物。 一个进程的又有信息对该进程的所有线程都是共享的,包括可执行程序的带吗、程序的全局内存和堆内存、栈以及文件描述符。 2、线程标识 每个线程有一个线程ID。进程ID在整个系统中是唯一的,但线程I原创 2016-08-13 11:42:54 · 546 阅读 · 0 评论 -
《UNIX环境高级编程》十信号读书笔记
1、信号概念 信号是软件中断,提供了一种处理异步事件的方法。 在头文件《signal.h>中,信号名都被定义为正整数常量(信号编号)。 不存在编号为0的信号,kill函数对信号编号0由特殊的应用。 在某个信号出现时,可以告诉内核按下列3中方式之一进行处理,我们称之为信号的处理或与信号相关的动作。 (1)忽略此信号。但SIGKILL和SIGSTOP这两种信号决不能被忽略。 (2)捕捉信号。 (3原创 2016-08-11 12:08:31 · 462 阅读 · 0 评论 -
《UNIX环境高级编程》九进程关系读书笔记
1、终端登陆 当系统自举时,内核创建进程ID为1的进程,也就是Init进程。init读取文件/etc/ttys,对每一个允许登陆的终端设备,init调用一次fork,它所生成的子进程则exec getty程序。 图9-1中所有进程的实际用户ID和有效用户ID都是0(也就是说,它们都具有超级用户特权)。init以空环境exec getty程序。 getty对终端设备调用open函数,原创 2016-08-10 19:51:30 · 491 阅读 · 0 评论 -
《UNIX环境高级编程》八进程控制读书笔记
1、进程标识 每个进程都有一个非负整形表示的唯一进城ID。 ID为0的进程通常是调度进程,常常被称为交换进程。该进程是内核的一部分,它并不执行任何磁盘上的程序,因此也被称为系统进程。 进程ID1通常是init进程,在自举过程结束时由内核调用。init进程决不会终止,它是一个普通的用户进程,但以超级用户特权运行。 #include <unistd.h> pid_t getpid(void);//返回进原创 2016-08-09 14:57:33 · 520 阅读 · 0 评论 -
《UNIX环境高级编程》十九伪终端读书笔记
1、概述伪终端是指,对于一个应用程序而言,它看上去想一个终端,但事实上它并不是一个真正的终端。 - 通常,一个进程打开伪终端主设备,然后调用fork。子进程建立一个新的会话,打开一个相应的伪终端从设备,将其文件描述符复制到标准输入、标准输出和标准错误,然后调用exec。伪终端从设备称为子进程的控制终端。 - 对于伪终端从设备上的用户进程来说,其标准输入、标准输出和标准错误都是终端设备。 -原创 2016-08-21 20:13:14 · 629 阅读 · 0 评论 -
《UNIX环境高级编程》十八终端I/O读书笔记
1、综述终端I/O有两种不同的工作模式: (1)规范模式输入处理。在这种模式中,对终端输入以行为单位进行处理。对于每个读请求,终端驱动程序最多返回一行。 (2)非规范模式输入处理。输入字符不装配成行。可以认为终端设备是由通常位于内核中的终端驱动程序控制的。每个终端设备都有一个输入队列和一个输出队列: 大多数UNIX系统在一个称为终端行规程的模块中进行全部的规范处理。这个模块位于内核通用读、写函原创 2016-08-21 13:19:34 · 492 阅读 · 0 评论 -
《UNIX环境高级编程》十七高级进程间通信读书笔记
1、UNIX域套接字UNIX域套接字用于在同一台计算机上运行的进程之间的通信。 UNIX域套接字提供流和数据报两种接口。UNIX域数据报服务是可靠的,既不会丢失报文也不会传递出错。使用socketpair函数来创建一对无命名的、相互连接的UNIX域套接字。#include <sys/socket.h> int socketpair(int domain,int type,int protocol,原创 2016-08-20 12:46:50 · 989 阅读 · 0 评论 -
《UNIX环境高级编程》七进程环境读书笔记
1、进程终止 有8种方式使进程终止,其中5种为正常终止: (1)从main返回; (2)调用exit; (3)调用_exit或_Exit; (4)最后一个线程从其启动例程返回; (5)从最后一个线程调用pthread_exit; 异常终止有三种方式: (6)调用abort (7)接到一个信号 (8)最后一个线程对取消请求做出响应#include <stdlib.h> void e原创 2016-08-08 20:11:27 · 354 阅读 · 0 评论 -
《UNIX环境高级编程》六系统数据文件和信息读书笔记
UNIX系统的正常运作需要使用大量与系统有关的数据文件,例如,口令文件/etc/passwd和组文件/etc/group等。 1、口令文件 口令文件的各字段包含在pwd.h>中定义的passwd结构中: struct passwd 成员 说明 char *pw_name 用户名 char *pw_passwd 加密口令 uid_t pw_uid 数值用户ID原创 2016-08-08 10:02:27 · 604 阅读 · 0 评论 -
《UNIX环境高级编程》十六网络IPC:套接字读书笔记
1、套接字描述符进程用套接字网络进程间通信接口能够和其他进程通信,无论它们是在同一台计算机上还是在不同的计算机上。 套接字是通信端点的抽象,应用程序用套接字描述符访问套接字。套接字描述符在UNIX系统中被当作是一种文件描述符。为创建一个套接字,调用socket函数:#include <sys/socket.h> int socket(int domain,int type,int protocol原创 2016-08-18 11:56:11 · 554 阅读 · 0 评论 -
《UNIX环境高级编程》五标准I/O库读书笔记
1、流和FILE对象 对于标准I/O库,它们的操作是围绕流(stream)进行的。当用标准I/O库打开或创建一个文件时,我们已使一个流与一个文件相关联。fwide函数用于设置流的定向#include <stdio.h> #include <wchar.h> int fwide(FILE *fp,int mode); 若流是宽定向的,返回正值,若流是字节定向的,返回负值,若流是为定向的,返回02、标原创 2016-08-07 20:46:36 · 545 阅读 · 5 评论 -
《UNIX环境高级编程》四文件和目录读书笔记
1、函数stat、fstat、fstatat、lstat#include <sys/stat.h> int stat(const char *restrict pathname,struct stat *restrict buf); int fstat(int fd,struct stat *buf); int lstat(const char *restrict pathname,struct s原创 2016-08-06 21:57:49 · 421 阅读 · 0 评论 -
《UNIX环境高级编程》十五进程间通信读书笔记
1、管道 管道的局限性: (1)历史上,它们是半双工的(即数据只能在一个方向上流动)。 (2)管道只能在具有公共祖先的两个进程之间使用。 半双工管道是最常用的IPC形式。每当在管道中键入一个命令序列,让shell执行时,shell都会为每一条命令单独创建一个进程,然后用管道将前一条命令进程的标准输出与后一条命令的标准输入相连接。 通过调用pipe创建管道: #include in原创 2016-08-17 13:56:43 · 402 阅读 · 0 评论 -
《UNIX环境高级编程》三文件I/O读书笔记
1、文件描述符的变化范围是0~OPEN_MAX-1。(OPEN_MAX:每个进程最大打开文件数) 2、函数open和openat(打开或创建一个文件):#include <fcntl.h> int open(const char *path,int oflag,.../*mode_t mode*/); int openat(int fd,const char *path,int oflag,...原创 2016-08-05 11:02:25 · 453 阅读 · 0 评论 -
《UNIX环境高级编程》十三守护进程读书笔记
1、守护进程的特征守护进程(daemon)是生存期长的一种进程。它们常常在系统引导装入时启动,仅在系统关闭时终止。因为它们没有控制终端,所以说它们是在后台运行的。父进程ID为0的各进程通常是内核进程,它们作为系统引导装入过程的一部分而启动(init(进程1)是个例外,它是一个由内核在引导装入时启动的用户层次的命令)。对于需要在进程上下文执行工作但却不被用户层进程上下文调用的每一个内核组件,通常有它自原创 2016-08-14 22:20:47 · 414 阅读 · 0 评论