Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在zmq(本地套接字)中获取调用方pid_Linux_Sockets_Ipc_Zeromq - Fatal编程技术网

Linux 如何在zmq(本地套接字)中获取调用方pid

Linux 如何在zmq(本地套接字)中获取调用方pid,linux,sockets,ipc,zeromq,Linux,Sockets,Ipc,Zeromq,我是zmq的新手。在基于Linux的操作系统中,Im对本地IPC使用相同的方法(套接字是AF_UNIX类型) 但是我找不到获取调用方(客户端)进程Id的方法。有没有办法使用zmq找到相同的方法?(为了满足我的访问控制需求,必须找到调用方的pid,如果zmq没有提供相同的pid,那么我应该切换到dbus) 请帮帮我。忘记大多数低级套接字设计和担心。在天空中想得更高。ZeroMQ是一个相当高级的消息传递概念。因此,对于大多数套接字io问题,您将不必担心 有关这些ZMQ原则的更多信息,请阅读Piete

我是zmq的新手。在基于Linux的操作系统中,Im对本地IPC使用相同的方法(套接字是AF_UNIX类型) 但是我找不到获取调用方(客户端)进程Id的方法。有没有办法使用zmq找到相同的方法?(为了满足我的访问控制需求,必须找到调用方的pid,如果zmq没有提供相同的pid,那么我应该切换到dbus)
请帮帮我。

忘记大多数低级套接字设计和担心。在天空中想得更高。ZeroMQ是一个相当高级的消息传递概念。因此,对于大多数套接字io问题,您将不必担心

有关这些ZMQ原则的更多信息,请阅读Pieter Hintjens的设计准则和他资源丰富的书“Code Connected,Vol.1”

也就是说,解决方案完全在您的控制之下

解决方案 创建特定于问题的多zmq套接字/多zmq模式(应用程序级逻辑使用和编排的多个zmq原语),作为特定于问题的正式通信握手

确保
将自己的
PID
添加到消息中

通过另一个register/auth套接字模式,从
接收方通过预先注册的
发送方
重新/授权,以避免假身份/被盗身份下的欺骗攻击


根据您的问题域调整您的访问控制策略,使用并实施任何级别的加密安全正式握手协议进行身份验证或密钥交换,以将您的访问控制策略安全性提高到足够的强度(包括MIL-STD等级).

因此,您建议使用So_PEERCRED/So_PASSCRED进行套接字身份验证握手,然后实际执行zmq IPC。实际上,我希望zmq能为我提供某种内置的实用程序来获取pid。(我猜dbus在内部也使用SO_PASSCRED/SO_PEERCRED表示套接字身份验证)。因此,为了在我的用例中使用zmq,我需要在套接字身份验证握手方面付出更多的努力:)因此,我想对于我的原型,我将继续使用dbus。基本的ZeroMQ/libzapi读入将为您提供包含的功能丰富的身份验证原语。Description
zauth对象接管其上下文中所有传入连接的身份验证。请注意,libzmq提供了四个级别的安全性:默认的NULL(zauth没有看到),以及zauth可以看到的经过身份验证的NULL、PLAIN和CURVE。
ZeroMQ属于can-Do-cultureczmq似乎很有趣,我将尝试一下。[我已经接受了您的方法作为答案,但由于我的项目的严格截止日期,我不确定是否可以使用,可怜的我:),但如果时间允许,zmq将是首选]