引言 让服务器在启动阶段调用fork创建一个子进程池,通过子进程来处理客户端请求。子进程与父进程之间使用socketpair进行通信(为了方便使用sendmsg与recvmsg,如果使用匿名管道,则无法使用以上两个函数)。以下针对TCP进行分析。 server端使用select轮询用于监听客户端请求...
分类:
系统相关 时间:
2014-09-11 13:46:01
阅读次数:
334
1关于管道
有两种类型的管道:匿名管道和命名管道。匿名管道比命名管道需要更少的开销,但是提供有限的服务。
术语管道,就像用在这里的,暗示管道被用作一个信息管子。从概念上讲,一个管道有两端。单向管道允许进程在一端写入,并且允许进程在令一端读入。双向管道允许进程在同一段读写。
匿名管道 命名管道
1.1 匿名管道
匿名管道是一种没有名...
分类:
其他好文 时间:
2014-09-10 23:56:31
阅读次数:
483
由于匿名管道使用的是文件描述符,所以我们只能用read和write对其进行读写。因为标准读写函数都是基于文件指针的。当read成功时,返回值为读到的字符数。当遇见文件结尾时,返回0(也就是什么都读不出来了)。出错,返回-1。—> 参考 man 2 read当write成功时,返回值为写入的字符数。返...
分类:
其他好文 时间:
2014-09-05 18:04:41
阅读次数:
221
在讨论匿名管道之前,我们先回顾下read和write系统调用以及fgets函数 #include ssize_t read(int fd, void *buf, size_t count);当read成功时,返回值为读到的字符数。当遇见文件结尾时,返回0(也就是什么都读不出来了)。出错,返回-1。—...
分类:
其他好文 时间:
2014-08-22 12:23:36
阅读次数:
224
CreatePipe function
创建匿名管道,返回读,写管道的handle。...
分类:
其他好文 时间:
2014-07-12 19:48:27
阅读次数:
264
Linux的通信方式主要有分类有下面几种:
-匿名管道和FIFO有名管道
-消息队列,信号量和共享存储
-套接字
.对于套接字的进程通信,我就留在套接字的文章中再写了.
一.管道
管道是最古老的进程通信机制了.提供进程间的单向通信.
1.创建管道
int pipe(int fdes[2]);
实际上管道通过参数返回读和写的两个文件描述符.相当于是打开了两个文件吧.但是这个文...
分类:
系统相关 时间:
2014-06-17 19:07:02
阅读次数:
339
管道大致分为两种:
1.匿名管道:这个一般只能用于父进程创建管道传递给子进程,可以父子进程通信
2.有名管道:这种管道存在于文件系统中,所以任意进程都能找到,都可以通过它来通信
API:
#include
int pipe(int fds[2])
fds[0] 是读取文件描述符,也就是管道出口
fds[1] 是写文件描述符,也就是管道入口
创建一个匿名管道
成功返回0,...
分类:
其他好文 时间:
2014-06-04 13:41:39
阅读次数:
365
匿名管道父进程#include#includemain(){HANDLEread=NULL,write=NULL;//定义两句柄SECURITY_ATTRIBUTESss;STARTUPINFOsa={0};PROCESS_INFORMATIONpp={0};//定义结构体SECURITY_ATTR...
分类:
其他好文 时间:
2014-05-19 18:36:09
阅读次数:
276
windows中有时候需要使用多进程进行编程,有的时候是因为一个复杂的过程需要开启一个新的进程进行处理,又或者仅仅是需要调用一个已经存在的exe等等,创建多个进程时,进程之间的通信是一个重要的问题,下面讨论一下如何使用匿名管道,在父子进程中进行通信。
使用情况:父进程使用createProce...
分类:
Windows程序 时间:
2014-05-09 09:40:51
阅读次数:
2313
原文地址:http://www.cnblogs.com/mickole/p/3192210.html
一,什么是管道 管道是Linux支持的最初Unix IPC形式之一,具有以下特点: 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;
只能用于父子进程或者兄弟进程之间(具...
分类:
系统相关 时间:
2014-05-04 19:06:23
阅读次数:
517