在类UNIX系统中进程间通信使用更普遍的方法是普通的TCP还是UNIX Socket?

发布于 2022-09-05 04:21:38 字数 274 浏览 15 评论 0

在linux中写了两个程序,一个基于QT,一个基于Python,各自有另外一方做不了(或不合适做)的任务。

然后两个进程需要互相发送数据进行通信。所以想到socket通信。但是选择TCP还是Unix Socket就犯了难。

本身服务器端是不需要外网通信的,所以初步选择了Unix Socket,但是常常因为对应的socket文件已经存在了,导致服务器启动不起来。但是用TCP的话,又会占用一个端口,并且不希望开放外部访问。

希望有做过类似东西的大神给指点一下这两种当时的正确用途都是什么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

初懵 2022-09-12 04:21:38

一般优先使用 UNIX domain socket。如果对应的 socket 文件已经存在就先删掉它。如果你要做单实例请使用 pidfile 和/或 flock 来处理。

如果你不考虑可移植性,可以考虑使用 abstract socket,就是跟 UNIX domain socket 一样但是只有名字没有文件的套接字,第一个字符为 NUL 即是。只有 Linux 支持。

如果是紧密相关的两个进程,可以使用管道或者 socketpair 来通信的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文