linux和windows中都有
管道和共享内存(最快的IPC)区别:
1.管道一次通信四次数据拷贝:由用户空间的buf中将数据拷贝到内核中->内核将数据拷贝到内存中->内存到内核->内核到用户空间的buf。而共享内存则只拷贝两次数据:用户空间到内存 -> 内存到用户空间。
2.管道用循环队列实现,连续传送数据可以不限大小。共享内存每次传递数据大小是固定的;
3.共享内存可以随机访问,管道只能顺序读写;
匿名管道
在具有公共祖先的进程之间进行通信。通信跟随进程消亡,所以是只存在于内存的临时文件。由于这种文件没有文件名,不能被非亲进程所打开,只能用于亲属进程间的通信,所以这种没有名称的文件形成的通信管道叫做“匿名管道”。
原理:创建子进程会复制父进程包括文件在内的一些资源。如果父进程创建子进程之前创建了一个文件,那么这个文件的描述符就会被之后创建的子进程所共享,父、子进程可以通过这个文件进行通信。如果通信的双方一方只能进行读操作&