Linux 系统编程 学习:02-进程间通信1:Unix IPC(1)管道 背景 上一讲我们介绍了创建子进程的方式.我们都知道,创建子进程是为了与父进程协作(或者是为了执行新的程序,参考 Linux exec族函数解析 ) 我们也知道,进程之间的资源在默认情况下是无法共享的,所以我们需要借助系统提供的 进程间通信(IPC, InterProcess Communication) 有关的接口. 进程间通信 由于进程间的地址空间相对独立.进程与进程间不能像线程间通过全局变量通信,所以进程之间要交换数…
Linux 系统编程 学习:03-进程间通信1:Unix IPC(2)信号 背景 上一讲我们介绍了Unix IPC中的2种管道. 回顾一下上一讲的介绍,IPC的方式通常有: Unix IPC包括:管道(pipe).命名管道(FIFO)与信号(Signal) System V IPC:消息队列.信号量.共享内存 Socket(支持不同主机上的两个进程IPC) 我们在这一讲介绍Unix IPC,中有关信号(Signal)的处理. 信号(Signal) Signal :进程给操作系统或进程的某种信息,…
背景 整理了Liunx 关于 进程间通信的 很常见的知识. 目录 与 说明 Linux 系统编程 学习:000-有关概念 介绍了有关的基础概念,为以后的学习打下基础. Linux 系统编程 学习:001-进程的有关概念 与 创建.回收 了解了如何创建子进程 Linux 系统编程 学习:002-进程间通信1:Unix IPC(1) Linux 系统编程 学习:003-进程间通信1:Unix IPC(2) 介绍了 管道(pipe).命名管道(FIFO)与信号(Signal) 的使用 Linux 系统…
Linux 系统编程 学习:00-有关概念 背景 系统编程其实就是利用系统中被支持的调度API进行开发的一个过程. 从这一讲开始,我们来介绍有关Linux 系统编程的学习. 知识 在进行Linux系统编程有关的开发之前,我们需要了解有关的概念. 进程(Process) 当一个进程创建以后,会被分配到一块虚拟内存中. 后面,我们还会知道:描述进程所涉及的所有信息和数据的那条记录叫做 PCB(process control block),每个进程有且仅有一个PCB. 通常,一个程序占用一块资源,不可…
Linux 系统编程 学习:04-进程间通信2:System V IPC(1) 背景 上一讲 进程间通信:Unix IPC-信号中,我们介绍了Unix IPC中有关信号的概念,以及如何使用. IPC的方式通常有: Unix IPC包括:管道(pipe).命名管道(FIFO)与信号(Signal) System V IPC:消息队列.信号量.共享内存 BSD套接字:Socket(支持不同主机上的两个进程IPC) 我们在这一讲介绍System V IPC:消息队列.共享内存.信号量(下一讲) 知识…
Linux 系统编程 学习:05-进程间通信2:System V IPC(2) 背景 上一讲 进程间通信:System V IPC(1)中,我们介绍了System IPC中有关消息队列.共享内存的概念,以及如何使用. todo: shm 有关例程 IPC的方式通常有: Unix IPC包括:管道(pipe).命名管道(FIFO)与信号(Signal) System V IPC:消息队列.信号量.共享内存 BSD套接字:Socket(支持不同主机上的两个进程IPC) 我们在这一讲介绍System…
Linux 系统编程 学习:006-基于socket的网络编程1:有关概念 背景 上一讲 进程间通信:System V IPC(2)中,我们介绍了System IPC中关于信号量的概念,以及如何使用. 这一讲我们来讨论"BSD socket(简称socket)",作为Linux中进程间通信的最后一种方式.实际上,socket可以跨主机通信. 本来文章标题应该以"进程间xxx"为字眼的,但是在开发中,我们更多提及"基于socket的网络编程". 知…
Linux 系统编程 学习:07-基于socket的网络编程2:基于 UDP 的通信 背景 上一讲我们介绍了网络编程的一些概念.socket的网络编程的有关概念 这一讲我们来看UDP 通信. 知识 UDP:User Datagram Protocol的缩写. UDP不提供复杂控制机制,利用IP提供面向无连接的通信服务.且它是将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制. UDP面向无连接,可以随时发送数据.它常用于几个方面: 包总量较少的通信(DNS.SNMP等) 视频…
Linux 系统编程 学习:01-进程的有关概念 与 创建.回收 背景 上一讲介绍了有关系统编程的概念.这一讲,我们针对 进程 开展学习. 概念 进程的身份证(PID) 每一个进程都有一个唯一的身份证号码,称之为进程号PID(Process Identity Number). 每一个进程都有其双亲进程,称之为父进程(或许称为双亲进程更贴切). 所有的进程都是祖先进程init的后代,除了init进程,每一个进程都有一个父进程. 通过 pstree 命令,可以清楚地看到系统中各个进程间的内在关系.…
Linux 系统编程 学习:09-线程:线程的创建.回收与取消 背景 我们在此之前完成了 有关进程的学习.从这一讲开始我们学习线程. 完全的开发可以参考:<多线程编程指南> 在Linux 系统编程 学习:有关概念中,我们介绍了线程和进程的概念. 概念 基础概念: 线程是cpu或操作系统调度的基本单位.线程大部分的资源是共享的,仅仅申请了自己的栈.空间. 线程是进程内部的一个执行分支,线程量级很小. 在程序中创建线程,可以提高效率,进程内线程越多,争夺到CPU的概率就越大,执行代码的概率就越大(…