上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 15 下一页

2012年8月6日

UNP总结 Chapter 6 I/O复用:select和poll函数

摘要: 有些进程需要一种预先告知内核的能力,使得内核一旦发现进程指定的一个或多个I/O条件就绪(也就是说输入已准备好被读取,或者描述符已能承受更多的输出),他就通知进程,这个能力成为I/O复用1.I/O模型5种基本I/O模型阻塞式I/O非阻塞式I/OI/O复用(select和poll)信号驱动式I/O(SIGIO)异步I/O一个输入操作通常包括两个不同的阶段等待数据准备从内核向进程复制数据对于一个套接口上的输入操作,第一步一般是等待数据到达网络,当分组到达时,它被拷贝到内核中的某个缓冲区,第二步是将数据从内核缓冲区拷贝到应用缓冲区。1).阻塞式I/O最流行的I/O模型是阻塞式I/O(blocking 阅读全文

posted @ 2012-08-06 00:14 as_ 阅读(1247) 评论(0) 推荐(0) 编辑

2012年8月5日

UNP总结 Chapter 5 TCP客户/服务器程序实例

摘要: 1.概述这章的TCP客户/服务器模型2.TCP回射服务器程序1).main函数#include "unp.h"int main(int argc, char **argv){ int listenfd, connfd; pid_t childpid; socklen_t clilen; struct sockaddr_in cliaddr, servaddr; listenfd = Socket (AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr)); serva... 阅读全文

posted @ 2012-08-05 17:58 as_ 阅读(746) 评论(0) 推荐(1) 编辑

UNP总结 Chapter 4 基本TCP套接字编程

摘要: 1.socket函数为了执行网络I/O,一个进程必须做的第一件事就是调用socket函数,指定期望的通信协议类型#include <sys/socket.h> int socket (int family, int type, int protocol);//返回:若成功则为非负描述符,若出错则为-1其中family指明协议族,type参数指明套接字类型,protocol参数应该设为某个(见下图)协议类型常值,或者设为0,以选择所给定family和type组合的系统默认值socket函数的family常值family说 明AF_INETAF_INETAF_LOCALAF_ROUTE 阅读全文

posted @ 2012-08-05 16:41 as_ 阅读(1246) 评论(0) 推荐(1) 编辑

UNP总结 Chapter 3 套接字编程简介

摘要: 1.套接字地址结构1).IPv4套接字地址结构IPv4套接字地址结构通常也称为“网际套接字地址结构”,它以sockaddr_in命名,定义在<netinet.h>头文件中,如下所示struct in_addr{ in_addr_t s_addr; //32位的IPv4网络字节序} struct sockaddr_in{ uint8_t sin_len; //带符号8位整数地址结构长度 sa_family_t sin_family; //协议族,IPv4为AF_INET ... 阅读全文

posted @ 2012-08-05 13:40 as_ 阅读(3531) 评论(0) 推荐(0) 编辑

UNP总结 Chapter 1 简介

摘要: 写在开头 UNP总结只列出相对重要的内容 简化细节 如想详细了解 见UNP socket API 第三版1.客户与服务器处于同一个以太网,有如下所示的通信层次2.一个简单TCP时间获取客户程序#include "unp.h"int main(int argc, char **argv){ int sockfd, n; char recvline[MAXLINE + 1]; struct sockaddr_in servaddr; if (argc != 2) err_quit("usage: a.out <IPaddress>"); ... 阅读全文

posted @ 2012-08-05 01:59 as_ 阅读(913) 评论(0) 推荐(0) 编辑

2012年8月4日

Chapter 17 高级进程间通信

摘要: 这章属于高级内容 内容比较简略1.基于STREAMS的管道流管道是一个双向(全双工)管道。单个流管道就能向父、子进程提供双向的数据流1).命名的STREAMS管道我们可以用fattach函数来在文件系统给一个STREAMS管道一个名字#include <stropts.h>int fattach(int filedes, const char *path);//成功返回0,错误返回-1。path参数必须引用一个已有的文件,调用进程必须拥有这个文件,或有对它有写的权限,或使用超级用户特权运行。一个进程可以调用fdetach来撤消STREAMS文件和文件系统里的名字之间的关联关系。#i 阅读全文

posted @ 2012-08-04 21:56 as_ 阅读(705) 评论(0) 推荐(0) 编辑

Chapter 15 进程间通信

摘要: 1.管道管道是UNIX系统IPC的最古老形式,在shell下的表现形式为管道线。每当在管道线中输入一个由shell执行的命令序列时,shell为每一条命令单独创建一进程,然后将前一条命令进程的标准输出用管道与后一条命令的标准输入相连接。管道有两个主要局限:1).管道是半双工的,即数据只能在一个方向上流动。2).管道只能在具有公共祖先的进程之间使用。管道是由调用pipe函数而创建的.#include <unistd.h>int pipe(int filedes[2]);//成功返回0,错误返回-1。经由参数filedes返回两个文件描述符:filedes[0]为读而打开,filede 阅读全文

posted @ 2012-08-04 21:06 as_ 阅读(2790) 评论(0) 推荐(0) 编辑

Chapter 14 高级I/O

摘要: 1.非阻塞I/O非阻塞I/O使我们可以调用不会永远阻塞的I/O操作,例如open,read和write。如果这种操作不能完成,则立即出错返回,表示该操作如继续执行将继续阻塞下去。对于一个给定的描述符有两种方法对其指定非阻塞I / O:(1) 如果是调用open以获得该描述符,则可指定O_NONBLOCK标志(2) 对于已经打开的一个描述符,则可调用fcntl打开O)NONBLOCK文件状态标志2.记录锁记录锁(record locking)的功能是:一个进程正在读或修改文件的某个部分时,可以阻止其他进程修改同一文件区1).fcntl记录锁下面给出fcntl函数原型#include <fc 阅读全文

posted @ 2012-08-04 18:07 as_ 阅读(711) 评论(0) 推荐(0) 编辑

Chapter 13 守护进程

摘要: 1.守护进程的特征 守护进程也称精灵进程是生存期长的一种进程,它们常常在系统引导装入时启动,在系统管比时终止。守护进程没有控制终端,所以它们是在后台运行的。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。 所有守护进程都以超级用户(用户ID为0)的优先权运行。没有一个守护进程具有控制终端,控制名称设置为(?)、终端前台进程组ID设置为-1。除update以外的所有守护进程都是组的首进程,对话期的首进程,而且是这些进程组和对 阅读全文

posted @ 2012-08-04 15:43 as_ 阅读(450) 评论(0) 推荐(0) 编辑

Chapter 12 线程控制

摘要: 1.线程限制用sysconf函数可以获得和thread相关的一些系统信息,主要是线程相关的一些最大值:线程限量和sysconf的名字参数限量名描述名字参数PTHREAD_ DESTRUCTOR_ITERATIONS当一个线程退出时一个实现将尝试销毁线程相关数据的最大次数。_SC_THREAD_ DESTRUCTOR_ITERATIONSPTHREAD_ KEYS_MAX一个进程可以创建的关键字的最大数量。_SC_THREAD_ KEYS_MAXPTHREAD_ STACK_MIN可以作为一个线程栈的最少字节数。_SC_THREAD_ STACK_MINPTHREAD_ THREADS_MAX一 阅读全文

posted @ 2012-08-04 15:14 as_ 阅读(907) 评论(0) 推荐(0) 编辑

上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 15 下一页

导航