Linux下进程中的通信(上)
一.进程通信的概念 为什么要进程通信? 进程通信:顾名思义,应该是两个进程间进行通信。 进程之间具有独立性,每个进程都有自己的虚拟地址空间,进程A不知道进程B的虚拟地址空间的数据内容(类似于一个人不知道另一个人脑子里在想啥) 二.进程间通信方式的分类 进程间通信方式的共同点: 进程间需要“介质”—两个进程都能访问到的公共资源。 常见的通信方式: 文件(最简单的方法) 假如用vim打开一个test.c文件,这时候会自动产生一个以文件名结尾的.swap文件,用于保存数据。 当正常关闭时,此文件会被删除。当文件非正常关闭时(比如编辑代码时突然断网),如果此时再次通过vim打开该文件,就会提示存在.swap文件,此时你可以通过它来恢复文件:vim -r filename.c 恢复以后把.swap文件删掉,就不会再出现一堆提示了。所以该文件存在就是为了进行进程中的通信。 管道 1.管道定义:一个进程连接到另一个进程的数据流。 ps aux | grep test ,将前一个进程(ps)的输出作为后一个进程(grep)的输入两进程间通过管道进行通信。 ps aux | -l :wc指word count,-l指行数,将ps aux进程的标准输出作为wc -l的标准输入。 2.管道分类 匿名管道和命名管道。 匿名管道 管道是在内核中的一块内存(构成了一个队列)