草庐IT

管道化

全部标签

c++ - 管道和套接字有什么区别?

两者都可以用于不同进程之间的通信,有什么区别? 最佳答案 Windows有两种管道:匿名管道和命名管道。匿名管道(相当)接近于Unix管道——典型的用法是父进程将它们设置为由子进程继承,通常连接到子进程的标准输入、输出和/或错误流。曾几何时,匿名管道的实现方式与命名管道完全不同,因此它们(例如)不支持重叠I/O。从那时起,情况发生了变化,因此匿名管道基本上只是一个您不知道名称的命名管道,因此您无法通过名称打开它,但它仍然具有命名管道的所有其他功能(例如上述重叠的I/O能力)。Windows命名管道更像是套接字。它们起源于OS/2,最

windows - 将传入电子邮件通过管道传输到 Windows IIS SMTP 上的脚本?

我有一个在WindowsIIS上运行的Web应用程序。这个应用程序有一个数据库,其中每个项目都有一个唯一的键(1、2、3...)和一个电子邮件地址列表(以及其他内容)。我希望用户使用标识该项目的电子邮件地址向服务器发送电子邮件,然后让服务器将消息转发到该项目的电子邮件地址。例如,如果用户向以下地址发送电子邮件:item-75@myserver.example.com然后服务器将接收电子邮件并将其通过管道传输到脚本。该脚本将在数据库中查询第75项以获取电子邮件地址列表,然后重新发送电子邮件。我可以在unix系统上使用sendmail轻松完成此操作,但我不知道是否可以在Windows系统上

windows - 如何检查我的 Delphi 控制台应用程序是否重定向到文件或管道?

我有一个控制台应用程序,当输出重定向(外部)到文件或管道(myapp.exe>Foo.bar)时必须禁用或启用某些操作如何检查我的Delphi控制台应用程序是否已重定向到文件或管道? 最佳答案 您可以使用GetStdHandle和GetFileType功能。首先使用GetStdHandle函数检索控制台输出句柄,然后可以使用GetFileType函数检查句柄的类型。{$APPTYPECONSOLE}{$R*.res}usesWindows,SysUtils;functionConsoleRedirected:Boolean;varF

windows - 有没有办法在 Windows 中嗅探命名管道流量?

是否有任何工具可以监控/捕获/嗅探命名管道流量?即使最大实例数=1? 最佳答案 官方没有办法。使用APIhooking.HookReadFile和/或WriteFile,也许还有CreateFileA/W(假设该应用程序是管道客户端)并在调用时执行必要的操作。Microsoft也有自己的APIHook库-Detours. 关于windows-有没有办法在Windows中嗅探命名管道流量?,我们在StackOverflow上找到一个类似的问题: https://

c# - 与 Windows 命名管道 (.Net) 的异步双向通信

我有一个Windows服务和一个GUI需要相互通信。两者都可以随时发送消息。我正在考虑使用NamedPipes,但您似乎无法同时读取和写入流(或者至少我找不到涵盖这种情况的任何示例)。是否可以通过单个NamedPipe进行这种双向通信?或者我是否需要打开两个管道(一个来自GUI->service,一个来自service->GUI)? 最佳答案 使用WCF,您可以使用双工命名管道//CreateacontractthatcanbeusedasacallbackpublicinterfaceIMyCallbackService{[Ope

windows - 有没有办法只将 stderr 重定向到 stdout(而不是将两者结合起来)以便它可以通过管道传输到其他程序?

我在WindowsCMD.EXE环境中工作,想更改stdout的输出以匹配stderr的输出,所以我可以在没有文件中介的情况下将错误消息传递给其他程序。我知道2>&1符号,但它将stdout和stderr组合成一个流。我的想法是这样的:program.exe2>&1|find""但这结合了stdout和stderr就像:program.exe|find""2>&1我意识到我可以做...program2>filetypefile|find""delfile但这不具备程序的灵active和功能|找到""那种符号。这样做需要program在可以处理输出之前完成其输出。

windows - 如何使用管道将一个命令的输出重定向到另一个命令的输入?

我有一个程序可以将文本发送到LED标志。prismcom.exe使用程序发送“你好”:prismcom.exeusbHello现在,我希望使用一个名为Temperature的命令程序。temperature假设程序给出了您计算机的温度。Yourcomputeris100degreesFahrenheit.现在,我想将温度的输出写入prismcom.exe:temperature|prismcom.exeusb这似乎行不通。是的,我已经为此寻找了二十多分钟的解决方案。在所有情况下,它们要么是kludges/hacks,要么是Windows命令行之外的解决方案。我希望得到有关如何将输出从温

windows - 如何在 Unix(或 Windows)中使用(最好是未命名的)管道将一个进程的标准输出发送到多个进程?

我想将进程proc1的标准输出重定向到两个进程proc2和proc3:proc2->stdout/proc1\proc3->stdout我试过了proc1|(proc2&proc3)但它似乎不起作用,即echo123|(tr1a&tr1b)写b23到标准输出而不是a23b23 最佳答案 编者注:->(…)是processsubstitution这是一些POSIX兼容shell的非标准shell特性:bash、ksh、zsh.-这个答案意外地通过管道也发送了输出进程替换的输出:echo123|三通>(tr1a)|tr1b.-进程替换的

windows - 如何获取 Windows 中所有打开的命名管道的列表?

有没有一种简单的方法可以测试您的命名管道是否正常工作?我想确保我从我的应用程序发送的数据确实被发送了。有没有一种快速简便的方法来获取所有命名管道的列表? 最佳答案 在WindowsPowershell控制台中,键入[System.IO.Directory]::GetFiles("\\.\\pipe\\")如果您的操作系统版本高于Windows7,您还可以键入get-childitem\\.\pipe\这将返回一个对象列表。如果你只想要名字:(get-childitem\\.\pipe\).FullName在Powershell7中,

redis - 将管道与 redis-cluster 一起使用时出现 Predis 错误

我尝试在我的redis-cluster中添加一个键值对,并在一个管道中为新键设置过期。每次我收到key被移动的错误时,但我认为Predis应该像没有流水线一样遵循MOVED语句。难道不能在管道中调用expire-call吗?我正在使用Predis1.0.2-dev使用redis_version:3.0.2这个有效:$parameters=['tcp://10.9.200.51:47801','tcp://10.9.200.52:47801','tcp://10.9.200.53:47801','tcp://10.9.200.54:47801'];$options=['cluster'=