XSI(System Interface and Headers),代表一种Unix系统的标准
XSI IPC,依托标识符和键来实现的,如同管道靠文件描述符来实现一样。包含了三种通信机制:消息队列,信号量,共享内存
1. IPC标识
内核为每个进程间通信维护一个结构体形式的IPC对象。该对象可通过一个非负整数的IPC标识来引用。与文件描述符不同,文件描述符总是找当前系统中可用的最小的数...
分类:
其他好文 时间:
2015-07-29 16:00:55
阅读次数:
281
文件描述符重定向cattest02>test02test02 2>error >error是追加。cat>test02 2>&1&1 1>test02#include#include#include#include#include#include#include#define BUFFER_SIZE...
分类:
系统相关 时间:
2015-07-27 18:36:17
阅读次数:
135
15.4 多客户
到目前为止,本章一直介绍的是,如果用套接字来实现本地的和跨网络的客户/服务器系统.一旦连接建立,套接字连接的行为就类似于打开的底层文件描述符,而且在很多方面类似于双向管道.
现在考虑有多个客户同时连接一个服务器的情况.服务器程序在接受来自客户的一个新连接时,会创建出一个新的套接字,而原先的监听套接字将被保留以继续监听以后的连接.如果服务器不能立刻接受后来的连接,它们将被...
分类:
系统相关 时间:
2015-07-26 00:32:26
阅读次数:
220
select:fd_set是输入结果参数,每次select之后,还得重置fd_set(1)使用copy_from_user从用户空间拷贝fd_set到内核空间,第一步需要复制所有感兴趣的文件描述符到内核态(2)注册回调函数__pollwait(3)遍历所有fd,调用其对应的poll方法(对于sock...
分类:
其他好文 时间:
2015-07-25 21:16:23
阅读次数:
250
读书笔记I/O复用使得程序能同时监听多个文件描述符,这对提高程序的性能至关重要。Linux下实现I/O复用的系统调用主要有select, poll, epoll。select:用户通过3个参数分别传人感兴趣的可读,可写及异常等事件,内核通过对这些参数的在线修改来反馈其中的就绪事件。用户每次调用sel...
分类:
系统相关 时间:
2015-07-25 16:34:42
阅读次数:
176
Linux进程通信中最为简单的方式是匿名管道匿名管道的创建需要用到pipe函数,pipe函数参数为一个数组表示的文件描述字。这个数组有两个文件描述字,第一个是用于读数据的文件描述符第二个是用于写数据的文件描述符。不能将用于写的文件描述符进行读操作或者进行读的文件描述符进写操作,这样都会导致错误。关于...
分类:
系统相关 时间:
2015-07-25 15:08:21
阅读次数:
212
首先普及几个知识:Linux下一切都是文件,包括输入输出设备、网络连接、socket、管道等与文件打开数最相关的是文件描述符(有的人喜欢称作文件标识符,英文为filedescriptor),文件打开数的实质就是文件描述符的数量文件打开数的多少取决于系统种类、内存大小,int(语言关键..
分类:
系统相关 时间:
2015-07-21 22:27:05
阅读次数:
222
1.dup和dup2函数#includeint dup(int fd);int dup2(int fd1,int fd2);两个均为复制一个现存的文件的描述两个函数的返回:若成功为新的文件描述,若出错为-1;由dup返回的新文件描述符一定是当前可用文件描述中的最小数值。用dup2则可以用fd2参数指...
分类:
系统相关 时间:
2015-07-21 21:59:36
阅读次数:
196
fd=fopen()是一个系统调用,用于根据文件名打开一个文件,返回该文件的文件描述符,文件打开后进程便可以根据文件描述符fd进行其他操作,比如读,写,关闭等操作。
各个操作系统打开文件的过程是类似的,本文以Unix为例,介绍打开一个文件操作系统所做的工作,正式介绍这个过程之前先简要介绍几个概念。
PCB(process control block)进程控制块,它是一个内核数据结构,相当于一个...
分类:
其他好文 时间:
2015-07-19 18:08:19
阅读次数:
125
线程原语
线程概念
线程(thread),有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。更多详细解释看百度百科:线程。
在Linux shell下通过命令 $ ps -Lf pid 查看指定pid号下的所有线程。
线程之间的共享与非共享
这里的线程是指同一进程下的线程。
共享:
1.文件描述符表
2.每种信号的处理方式
3.当前工作目录
4.用户ID和组ID...
分类:
编程语言 时间:
2015-07-17 21:08:58
阅读次数:
165