练习--LINUX进程间通信之无名管道PIPE
IBM上放的这个系统不错,刚好可以系统回温一下LINUX的系统知识。
http://www.ibm.com/developerworks/cn/linux/l-ipc/part1/
感觉年纪大了,前几年看的LINUX内核和系统的东东,忘了很多,要慢慢转化成永久记忆才可以。
今天,又拿起《LINUX内核设计与实现》,慢慢啃下去。
~~~~~~~~~~~~~~
进程通信有如下一些目的:
A、数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间
B、共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。
C、通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。
D、资源共享:多个进程之间共享同样的资源。为了作到这一点,需要内核提供锁和同步机制。
E、进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。
Linux 进程间通信(IPC)以下以几部分发展而来:
早期UNIX进程间通信、基于System V进程间通信、基于Socket进程间通信和POSIX进程间通信。
UNIX进程间通信方式包括:管道、FIFO、信号。
System V进程间通信方式包括:System V消息队列、System V信号灯、System V共享内存、
POSIX进程间通信包括:posix消息队列、posix信号灯、posix共享内存。
现在linux使用的进程间通信方式:
(1)管道(pipe)和有名管道(FIFO)
(2)信号(signal)
(3)消息队列
(4)共享内存
(5)信号量
(6)套接字(socket)
~~~~~~~~~~~~~~
手打的代码,总舍不得就没了:)
/*****************
 * * readtest.c*
 * *******************/
#include <unistd.h>
#include <sys/types.h>
#include <errno.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
main()
{
    ];
    pid_t pid;
    ];
    ];
    char* p_wbuf;
    int r_num;
    int cmd;
    memset(r_buf, , sizeof(r_buf));
    memset(w_buf, , sizeof(r_buf));
    p_wbuf = w_buf;
    )
    {
        printf("pipe create error\n");
        ;
    }
    )
    {
        printf("\n");
        close(pipe_fd[]);
        sleep();
        r_num = read(pipe_fd[], r_buf, );
        printf("read num is %d the data read from the pipe is %d\n", r_num, atoi(r_buf));
        close(pipe_fd[]);
        exit();
    }
    )
    {
        close(pipe_fd[]);
        strcpy(w_buf, ");
        ], w_buf, ) != -)
        {
            printf("parent write over\n");
        }
        close(pipe_fd[]);
        printf("parent close fd[1] over\n");
        sleep();
    }
}

练习--LINUX进程间通信之无名管道PIPE的更多相关文章
- Linux简单程序实例(GNU工具链,进程,线程,无名管道pipe,基于fd的文件操作,信号,scoket)
		一, GNU工具链简介: (1)编译代码步骤: 预处理 -> 编译 -> 汇编 -> 链接: 预处理:去掉注释,进行宏替换,头文件包含等工作: gcc -E test.c -o te ... 
- Linux进程间通信——使用匿名管道
		在前面,介绍了一种进程间的通信方式:使用信号,我们创建通知事件,并通过它引起响应,但传递的信息只是一个信号值.这里将介绍另一种进程间通信的方式——匿名管道,通过它进程间可以交换更多有用的数据. 一 ... 
- 【Linux 应用编程】进程管理 - 进程间通信IPC之管道 pipe 和 FIFO
		IPC(InterProcess Communication,进程间通信)是进程中的重要概念.Linux 进程之间常用的通信方式有: 文件:简单,低效,需要代码控制同步 管道:使用简单,默认阻塞 匿名 ... 
- Linux进程间通信——使用命名管道
		在前一篇文章——Linux进程间通信——使用匿名管道中,我们看到了如何使用匿名管道来在进程之间传递数据,同时也看到了这个方式的一个缺陷,就是这些进程都由一个共同的祖先进程启动,这给我们在不相关的的进程 ... 
- 管道通信之无名管道---pipe()
		pipe()函数在子进程产生之前就应该存在. 父子进程之间只进行一次传递 /*============================================ > Copyright ( ... 
- 《Linux 进程间通信》命名管道:FIFO
		命名管道的主要用途:不相关的进程之间交换数据. 命令行上创建命名管道: $ mkfifo filename 程序中创建命名管道: #include <sys/types.h> #incl ... 
- 进程间通信IPC之--无名管道(pipe)和有名管道(fifo)(转)
		进程间通信IPC之--无名管道(pipe)和有名管道(fifo) 2012-01-17 22:41:20 分类: C/C++ 每个进程各自有不同的用户地址空间,任何一个进 程的全局变量在另一个进程中 ... 
- Linux进程间通信(三):匿名管道 popen()、pclose()、pipe()、close()、dup()、dup2()
		在前面,介绍了一种进程间的通信方式:使用信号,我们创建通知事件,并通过它引起响应,但传递的信息只是一个信号值.这里将介绍另一种进程间通信的方式——匿名管道,通过它进程间可以交换更多有用的数据. 一.什 ... 
- Linux 进程间通信之管道(pipe),(fifo)
		无名管道(pipe) 管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信: 定义函数: int pipe(int f ... 
随机推荐
- CSS3选择器使用小结
			CSS3 选择器小结 一 通用选择器 1 *{}通配选择符(CSS2):适合所有元素对象. 2 E类型(HTML)选择符(CSS1):以文档语言对象类型DOM作为选择符. 3 E#myid是id ... 
- jquery mobile 移动web
			轻量级框架jQuery Mobile 所需文件 <link rel="stylesheet" href="jquery.mobile-1.1.2/jquery.mo ... 
- dedecms内容管理
			dedecms中的内容模型是指文章.软件.商品等类型的文章字段模板.在dedecms中,文章数据由文章主表和文章附加表构成,主表存放文章公共拥有的信息,比如标题,添加时间,点击量等,文章附加表存放文章 ... 
- placeholder
			html: <div style="position:relative;"> <input type="password" id=&quo ... 
- 用jquery-easyui中的combotree实现树形结构的选择
			用jquery-easyui中的combotree实现树形结构的选择 需求:实现一个树形节点的选择,要求默认父节点都折叠,父节点前的checkbox不显示,子节点显示checkbox,且父节点不可选择 ... 
- 如何覆盖aar的资源
			1.首先理解一下aar的构造 classes.jar ----代码 res---资源文件 2.替换 查看res里面的资源文件,这个资源文件事实上都是跟安卓的资源文件夹是一样的.你只需要理解xml和里面 ... 
- cl: cannot open file 'kernel32.lib'
			在测试 jni时, 使用 cl命令, 如 cl -I xx\jdk1.7.0_17\include -I xx\jdk1.7.0_17\include\win32 -LD HelloNative.c ... 
- 设计模式------STRATEGY(策略模式)
			http://blog.csdn.net/wuzhekai1985/article/details/6665197.仅供参考. 策略模式:实现替换功能,如cache替换算法:当发生Cache缺失时,C ... 
- ios 经典错误
			1 - [person test]:unrecognized selector sent to instance. 给penson对象发送一个不能识别的消息:test 2 set/get方法死循环 ... 
- python 自动化之路 day 09 进程、线程、协程篇
			本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者 ... 
