Linux高级编程--07.进程间通信】的更多相关文章

每个进程各自有不同的用户地址空间,进程之间要交换数据必须通过在内核中开辟缓冲区,从而实现数据共享. 管道 管道是一种最基本的IPC机制,由pipe函数创建: int pipe(int filedes[2]); 调用pipe函数时在内核中开辟一块缓冲区(称为管道)用于通信,它有一个读端一个写端,然后通过filedes参数传出给用户程序两个文件描述符,filedes[0]指向管道的读端,filedes[1]指向管道的写端(很好记,就像0是标准输入1是标准输出一样).所以管道在用户程序看起来就像一个打…
linux高级编程基础系列:线程间通信 转载:原文地址http://blog.163.com/jimking_2010/blog/static/1716015352013102510748824/ 线程间通信机制: 线程是一种轻量级的进程. 进程的通信机制主要包括无名管道.有名管道.消息队列.信号量.共享内存以及信号等.这些机制都是由linux内核来维护的,实现起来都比较复杂,而且占用大量的系统资源. 线程间的通信机制实现起来则相对简单,主要包括互斥锁.条件变量.读写锁和线程信号等. 本文会对以…
[转自: http://blog.csdn.net/Paradise_for_why/article/details/5550619] 这一章就是著名的IPC,这个东西实际的作用和它的名字一样普及.例如我们浏览网页,打印文章,等等. IPC总共有五种类型: 共享内存(Shared Memory):最容易理解的一种,就像一个特工把情报放在特定地点(内存),另一个特工再过来取走一样. 内存映射(Mapped Memory):和共享内存几乎相同,除了特工们把地点从内存改成了文件系统. 管道(Pipes…
系统调用 01.什么是系统调用? 02.Linux系统调用之I/O操作(文件操作) 03.文件描述符的复制:dup(), dup2() 多进程实现多任务 04.进程的介绍 05.Linux可执行文件结构与进程结构 06.多进程实现多任务(一):fork() 07.多进程实现多任务(二):vfork() 08.进程的控制:结束进程.等待进程结束 09.Linux特殊进程之僵尸进程 10.Linux特殊进程之孤儿进程 11.Linux特殊进程之守护进程 12.进程替换:exec函数族 进程间通信 1…
F: 计算机系统结构: ------------------------------- 应用程序 ----------------- |  库函数 ------------------------------- 系统调用 ------------------------------- 虚拟文件系统  |    进程模块 -(文件模块)-|   进程间通信 设备文件     | ------------------------------- 硬 件 ------------------------…
Linux下的Socket编程大体上包括Tcp Socket.Udp Socket即Raw Socket这三种,其中TCP和UDP方式的Socket编程用于编写应用层的socket程序,是我们用得比较多的,而Raw Socket则用得相对较少,不在本文介绍范围之列. TCP Socket 基于TCP协议的客户端/服务器程序的一般流程一般如下: 它基本上可以分为三个部分: 一.建立连接: 服务器调用socket().bind().listen()完成初始化后,调用accept()阻塞等待,处于监听…
缓冲I/O和非缓冲I/O 文件读写主要牵涉到了如下五个操作:打开.关闭.读.写.定位.在Linux系统中,提供了两套API, 一套是C标准API:fopen.fclose.fread.fwrite.fseek, 另一套则是POSIX定义的系统API:open.close.read.write.seek. 其中POSIX定义的API是系统API,而C标准API是基于系统API的封装,并且提供了额外的缓冲的功能.因此也可以把它们叫做缓冲I/O函数和非缓冲I/O函数. 除了前面介绍的这几个缓冲IO函数…
在Linux环境下,我们通常用gcc将C代码编译成可执行文件,如下就是一个简单的例子: 小实验:hello.c #include <stdlib.h> #include <stdio.h> void main(void) { printf("hello world!\r\n"); } 可以通过如下指令来编译出一个可执行文件: gcc hello.c 执行完该命令后,就会得到一个a.out的可执行文件. 编译的过程 前面的例子只是简单的介绍了一下gcc的使用方法,…
VI是Linux/Unix下标配的一个纯字符界面的文本编辑器.由于不支持鼠标功能,也没有图形界面,相关的操作都要通过键盘指令来完成,需要记忆大量命令.因此很多人不大喜欢它,但同时由于键盘的方式往往比鼠标来得快,一旦熟练后用起来是有种非常流畅的感觉的,也有人因此而非常喜欢它. 不管你喜欢也好,不喜欢也好,VI是Linux的标配编辑器,很多时候你也只有这一个编辑器可用,如果要做一个Linux Coder,熟悉VI还是非常有必要的. PS:由于VI的命令非常多,本文主要只介绍一些基础命令.并且就算是这…
从今天起,开始学习进程间通信相关的东东,关于socket的编程先告一段落了,在学习进程间通信之前,首先先要了解一些概念,所以,这次不开始真正的代码编写,先纯理论,理解了为之后的更深入的学习可以打下良好的基础,下面进入正题: 实际上这也是进程之间的两种关系,在学习这两种关系之前,需要回顾一下顺序程序与并发程序的特征: 顺序程序特征: ①.顺序性 顺序程序执行的顺序是按照指令的先后顺序来执行的,当前的指令需依赖于前一条指令,并与前一条指令构成了一定的因果关系,后一条指令的执行一定要在前一条指令的基础…