摘要: 共享内存就是在内核空间中开辟一块区域用来进程间共享访问来达到进程间通信的目的.和管道类似,也分为亲缘进程间通信和普通进程间通信两种.但是只是在创建shmid的时候使用key不同而已,而且和管道不同的是,共享内存的读取可以重复无数次,而管道不能重复读取,读取一次以后管道中将没有数据. 如果是普通进程自 阅读全文
posted @ 2016-04-17 21:54 叫我大哥哥 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 说起信号,就像是一个软中断一样,就是一个信号来了以后我们程序中断当前执行的代码,找到之前注册过的相应信号的执行代码进行处理.其实我们使用的非常的广泛了,就像我们在终端里面要停止一个进程的运行,我们会同时按下ctrl+C的按键来终止程序,这个就是一个信号,是停止信号,是标号为9的信号,我们可以使用ki 阅读全文
posted @ 2016-04-17 15:46 叫我大哥哥 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 管道是类似于文件读写进程间通信的方式,也是比较古老的进程间通信方式.管道的使用需要在创建管道文件,进程通过对该文件读写来完成通信,管道文件并不会占用磁盘空间.必须管道内有信息的时候才能对管道内进行读取.否则会IO堵塞.程序被堵塞.而且管道两端被打开以后才可以进行读写,否则IO堵塞.个人比较喜欢使用信 阅读全文
posted @ 2016-04-17 12:12 叫我大哥哥 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 僵尸进程:在子进程未退出的情况下,父进程退出,子进程被init进程接管,但是子进程将不会正常退出,退出后也不会被收回该进程的资源,所以这种情况应该被避免,否则数量多了以后系统资源将被消耗完.为了避免这种情况可以是用vfork函数进行子进程的派生,或者在父进程中使用一下函数来等待子进程的退出: 头文件 阅读全文
posted @ 2016-04-17 11:35 叫我大哥哥 阅读(609) 评论(0) 推荐(0) 编辑
摘要: 通过Linux启动过程可以得知,所有进程都是init进程直接或者间接的fork出来的. 首先咱们来看看怎么创建子进程: 头文件 #include <unistd.h> int fork(void); //创建一个子进程(开辟和父进程相同空间)返回值:-1失败,成功返回创建的子进程的Id int vf 阅读全文
posted @ 2016-04-17 10:54 叫我大哥哥 阅读(3400) 评论(0) 推荐(0) 编辑