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

查看:90
本文介绍了linux - 在类UNIX系统中进程间通信使用更普遍的方法是普通的TCP还是UNIX Socket?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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

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

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

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

解决方案

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

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

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

这篇关于linux - 在类UNIX系统中进程间通信使用更普遍的方法是普通的TCP还是UNIX Socket?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆