Unix域套接字如何实现跨进程通信?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1106个文字,预计阅读时间需要5分钟。
Unix域套接字作者:Tuyer由于只能实现具有亲缘关系的进程之间的进程间通信,使用受到了很大的限制。命名管道解决了这一问题。无论是管道还是命名管道,都只能实现单向通信(在只的情况下)。
Unix域套接字作者:tuyer
管道由于只能实现具有亲缘进程的进程间通信,使用受到了很大的限制,命名管道解决了这一问题。但是,无论是管道还是命名管道,都只能实现单向通信(在只创建一个管道的情况下)。
使用套接字除了可以实现网络间不同主机间的通信外,还可以实现同一主机的不同进程间的通信,且建立的通信是双向的通信。这里所指的使用套接字实现进程间通信,是由将通信域指定为PF_UNIX来实现的。该函数的形式如下:
int socket(int domain, int type, int protocol);
socket函数中的domain参数用于指定通信域,domain参数取PF_UNIX时,表示创建UNIX域的套接字。使用PF_UNIX域的套接字可以实现同一机器上的不同进程间的通信。
调用bind函数实现了套接字与地址(这里是文件名)的绑定。
本文共计1106个文字,预计阅读时间需要5分钟。
Unix域套接字作者:Tuyer由于只能实现具有亲缘关系的进程之间的进程间通信,使用受到了很大的限制。命名管道解决了这一问题。无论是管道还是命名管道,都只能实现单向通信(在只的情况下)。
Unix域套接字作者:tuyer
管道由于只能实现具有亲缘进程的进程间通信,使用受到了很大的限制,命名管道解决了这一问题。但是,无论是管道还是命名管道,都只能实现单向通信(在只创建一个管道的情况下)。
使用套接字除了可以实现网络间不同主机间的通信外,还可以实现同一主机的不同进程间的通信,且建立的通信是双向的通信。这里所指的使用套接字实现进程间通信,是由将通信域指定为PF_UNIX来实现的。该函数的形式如下:
int socket(int domain, int type, int protocol);
socket函数中的domain参数用于指定通信域,domain参数取PF_UNIX时,表示创建UNIX域的套接字。使用PF_UNIX域的套接字可以实现同一机器上的不同进程间的通信。
调用bind函数实现了套接字与地址(这里是文件名)的绑定。

