gpt4 book ai didi

c - unix域套接字VS命名管道?

转载 作者:IT老高 更新时间:2023-10-28 12:23:35 26 4
gpt4 key购买 nike

在查看了一个名为 socket 的 unix 之后,我认为它们是命名管道。我查看了名称管道,并没有看到太大的区别。我看到它们的初始化方式不同,但这是我唯一注意到的。两者都使用 C 写/读功能,工作方式与 AFAIK 相似。

unix 域套接字和命名管道有什么区别?我什么时候会选择一个而不是另一个?我应该默认使用哪个(比如我在 C++ 中默认使用 vector 而不是使用双端队列、列表或其他任何我需要的东西)?

最佳答案

UNIX 域套接字通常比命名管道更灵活。它们的一些优点是:

  • 您可以将它们用于两个以上的进程通信(例如,一个可能有多个客户端进程连接的服务器进程);
  • 它们是双向的;
  • 它们支持在进程之间传递经过内核验证的 UID/GID 凭据;
  • 它们支持在进程之间传递文件描述符;
  • 它们支持数据包和序列数据包模式。

要使用其中许多功能,您需要使用 send()/recv() 系列系统调用,而不是 write()/read().

关于c - unix域套接字VS命名管道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9475442/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com