C/C++ Learning

您正在查看: 标签 System 下的文章

Makefile经典模版,解决头文件依赖

一、基础知识在进行下一步之前,首先需要了解make的执行步骤:1、读入Makefile 2、读入被include的其它Makefile 3、初始化Makefile中的变量 4、推导隐晦规则,并分析所有规则 5、为所有目标创建依赖关系链 6、根据依赖关系,决定哪些目标需要重新生成 7、执行生成命令 二、解决头文件依赖的Makefile模版源文件目录结构:[root@localhost hell...阅读全文

Linux环境进程间通信-套接口(六)

在本专题的前面几个部分,如消息队列、信号灯、共享内存等,都是基于Sys V的IPC机制进行讨论的,它们的应用局限在单一计算机内的进程间通信;基于BSD套接口不仅可以实现单机内的进程间通信,还可以实现不同计算机进程之间的通信。本文将主要介绍BSD套接口(sockets),以及基于套接口的重要而基本的API。一个套接口可以看作是进程间通信的端点(endpoint),每个套接口的名字都是唯一的(唯...阅读全文

Linux环境进程间通信-共享内存(五-下)

在共享内存(上)中,主要围绕着系统调用mmap()进行讨论的,本部分将讨论系统V共享内存,并通过实验结果对比来阐述两者的异同。系统V共享内存指的是把所有共享数据放在共享内存区域(IPC shared memory region),任何想要访问该数据的进程都必须在本进程的地址空间新增一块内存区域,用来映射存放共享数据的物理内存页面。系统调用mmap()通过映射一个普通文件实现共享内存。系统V则...阅读全文

Linux环境进程间通信-共享内存(五-上)

共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消...阅读全文

Linux环境进程间通信-信号灯(四)

信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。一、信号灯概述信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用...阅读全文

Linux环境进程间通信-消息队列(三)

早期的通信机制信号以及管道的缺点:(1)信号信号能够传送的信息量有限,后来虽然POSIX 1003.1b在信号的实时性方面作了拓广,使得信号在传递信息量方面有了相当程度的改进,但是信号这种通信方式更像"即时"的通信方式,它要求接受信号的进程在某个时间范围内对信号做出反应,因此该信号最多在接受信号进程的生命周期内才有意义,信号所传递的信息是接近于随进程持续的概念(2)管道及有名管道管道则是典型...阅读全文

Linux环境进程间通信-信号(二)

一、信号及信号来源信号本质信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。信号机制经过POSIX实时扩展后,功能更加强大,除了基本通知功...阅读全文

Linux环境进程间通信-管道及有名管道(一)

摘自文章:https://www.ibm.com/developerworks/cn/linux/l-ipc/part1/    管道和有名管道是最早的进程间通信机制之一,管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。 认清管道和有名管道的读写规则是在程序中应用它们的关键,本文在详细讨论了管道和有名管道的...阅读全文

Linux进程间通信方式概述(IPC)

文章内容摘自:http://www.ibm.com/developerworks/cn/linux/l-ipc/index.html#authorN10017一般来说,linux下的进程包含以下几个关键要素:  有一段可执行程序;  有专用的系统堆栈空间;  内核中有它的控制块(进程控制块),描述进程所占用的资源,这样,进程才能接受内核的调度;  具有独立的存储空间进程和线程有时候并不完全区...阅读全文

linux进程创建之fork()、vfork()以及clone(...)

fork  fork创建一个进程时,子进程只是完全复制父进程的资源,复制出来的子进程有自己的task_struct结构和pid,但却复制父进程其它所有的资源。例如,要是父进程打开了五个文件,那么子进程也有五个打开的文件,而且这些文件的当前读写指针也停在相同的地方。所以,这一步所做的是复制。这样得到的子进程独立于父进程, 具有良好的并发性,但是二者之间的通讯需要通过专门的通讯机制,如:pipe...阅读全文