网络编程笔记二 (进程间通信IPC)

应用程序设计方式:

    1.一个庞大的应用程序完成全部工作,程序的各个片段间通过函数参数、函数返回值、全局变量相互调用
    2.使用IPC进行通信的多个应用程序,如unix工具使用shell管道
    3.由多个使用IPC通信的应用程序组成的单个应用程序,通信发生在线程间(也以IPC称呼)

进程间通信都是通过它们都可以访问的介质里进行的,主要有管道、消息队列、共享内存+信号量

管道:

使用两个文件描述符表示的文件,一个用于读,一个用于写;
之所以只能用于有血缘关系的进程(父子、兄弟),在于某个祖先节点先创建了管道;

fork()出的子进程也会复制该管道的描述符(有了访问途径),所以血缘关系的进程间能通过分别关闭代表读/写描述符来进行通信。

可以理解为,祖先发现了暗道,代代传给子孙

FIFO(有名管道):任何进程都能根据它在文件系统中路径名访问
    使用文件来进行通信,形式上也是只能一边读一边写。

消息队列:

内核里的一个消息队列(链表实现),通信进程双方可以通过分别向里面放入、拿出消息进行通信

共享内存:

分配一块物理内存,任何进程都能访问,只要把它映射到自己的地址空间(虚拟内存),效率很高,不安全,所以要结合信号量来同步。
全部评论

相关推荐

01-17 12:35
吉首大学 Java
秋招之BrianGriffin:自己的工作自己做!😡
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务