首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么是命名管道?

什么是命名管道?
EN

Stack Overflow用户
提问于 2008-10-06 18:28:59
回答 6查看 208.1K关注 0票数 151

它们是什么?它们是如何工作的?

上下文恰好是SQL Server

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-10-06 18:50:14

在Windows和POSIX系统上,命名管道都提供了一种在同一台计算机上运行的进程之间进行进程间通信的方法。命名管道为您提供了一种发送数据而不涉及网络堆栈的性能损失的方法。

就像您的服务器监听IP地址/端口的传入请求一样,服务器也可以设置一个命名管道来监听请求。在这两种情况下,客户端进程(或DB访问库)都必须知道发送请求的特定地址(或管道名称)。通常,存在一个常用的标准缺省值(与HTTP的端口80非常相似,SQL server在TCP/IP中使用端口1433;\.\pipe\sql\query查找命名管道)。

通过设置额外的命名管道,您可以运行多个DB服务器,每个服务器都有自己的请求侦听器。

命名管道的优点是它通常要快得多,并且可以释放网络堆栈资源。

--顺便说一句,在Windows环境中,您还可以拥有到远程计算机的命名管道--但在这种情况下,命名管道是通过TCP/IP传输的,因此您将损失性能。使用命名管道进行本地计算机通信。

票数 166
EN

Stack Overflow用户

发布于 2008-10-06 20:51:09

Unix和Windows都有称为“命名管道”的东西,但它们的行为不同。在Unix上,命名管道是一条单行道,通常只有一个读取器和一个写入器-写入器写,读取器读,你明白了吗?

在Windows上,被称为“命名管道”的东西是一个更像TCP套接字的IPC对象-事物可以双向流动,并且有一些元数据(您可以在另一端获得事物的凭证等)。

Unix命名管道在文件系统中显示为一个特殊的文件,可以通过包括shell在内的普通文件IO命令进行访问。Windows ones不需要,需要用一个特殊的系统调用来打开(之后它们的行为很像一个普通的win32句柄)。

更令人困惑的是,Unix有一种叫做"Unix socket“或AF_UNIX套接字的东西,它的工作方式更像(但不完全像) win32的”命名管道“,是双向的。

票数 46
EN

Stack Overflow用户

发布于 2008-10-06 18:38:24

比较

代码语言:javascript
复制
echo "test" | wc

代码语言:javascript
复制
mkdnod apipe p
wc apipe

wc将被阻止,直到

代码语言:javascript
复制
echo "test" > apipe

执行

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/175579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档