在查看一个名为socket的unix后,我认为它们被命名为管道.我看着名字管道并没有看到太大的区别.我看到它们的初始化方式不同,但这是我唯一注意到的事情.两者都使用C写/读功能和类似AFAIK的工作.
什么是unix域套接字和命名管道之间的区别?我何时会选择一个而不是另一个?默认情况下我应该使用哪个(比如我在C++中默认使用向量,而不是使用deque,list或者其他任何我需要的东西)?
caf*_*caf 97
UNIX域套接字通常比命名管道更灵活.他们的一些优点是:
要使用其中许多功能,您需要使用send()/ recv()系列调用而不是write()/ read().
jto*_*ron 63
一个区别是命名管道是单向的,因此您需要使用其中两个才能进行双向通信.套接字当然是双向的.使用两个变量而不是一个变量(即两个管道而不是一个套接字)似乎稍微复杂一些.
此外,维基百科文章在以下几点非常清楚:"Unix域套接字可以创建为字节流或数据报序列,而管道只是字节流."