草庐IT

管道化

全部标签

windows - 关于管道的基本问题

我有一些关于管道的基本问题我不确定。a)如果写入管道的进程被终止(即SIGKILLSIGINT),标准行为是什么?它会关闭管道吗?它会冲洗管道吗?还是行为未定义?b)如果进程正常返回,标准行为是什么?是不是保证能冲管和封管?(当然没有明确地这样做)。我希望这些答案尽可能笼统,但实际上,如果它完全取决于操作系统规范,我可以接受!但是,如果有Posix标准或当前定义的Windows行为,我将不胜感激。谢谢。 最佳答案 a.Whatisthestandardbehaviorifaprocesswritingtoapipegetskille

c++ - 未从命名管道服务器获得任何响应

我在Windows服务中创建了一个NamedPipe,并手动或在系统启动时启动该服务。编辑:lpszPipename=TEXT("\\\\.\\pipe\\1stPipe");OVERLAPPEDm_OverLaped;HANDLEhEvent;hPipe=CreateNamedPipe(lpszPipename,PIPE_ACCESS_DUPLEX|FILE_FLAG_OVERLAPPED,PIPE_TYPE_MESSAGE|PIPE_READMODE_MESSAGE|PIPE_NOWAIT,PIPE_UNLIMITED_INSTANCES,BUFSIZE,BUFSIZE,0,NUL

windows - 命名管道客户端可以写入多个实例吗?

在创建命名管道的多个实例(使用CreateNamedPipe())之后,我使用CreateFile()来形成管道客户端。当客户端向管道写入一条消息时,只有一个服务器实例获取它。有没有办法让客户端向所有实例写一条消息? 最佳答案 据我所知,当客户端连接到命名管道的实例时,操作系统选择连接哪个服务器实例的方式没有记录。然而,根据经验,它似乎是在循环法的基础上完成的。如果您准备依赖可能随服务包和QFE补丁而改变的未记录的行为,您的客户端可以继续关闭其管道句柄并再次调用CreateFile以获得一个新的-每次它都会附加到一个新的服务器实例的

windows - 使用 NamedPipe 时,有什么方法可以检测客户端管道的句柄是否关闭?

我想知道是否有一种方法可以在Windows平台上从服务器端检测客户端管道句柄的状态。即使客户端使用CloseHandle()函数关闭了管道(断开连接),但似乎无法从服务器端检测到它。将WaitForSingleObject()与句柄对象一起使用会返回WAIT_OBJECT_0,无论客户端句柄的状态如何。那么,从服务器端以更低的成本检测客户端管道的句柄是否关闭的好的解决方案是什么? 最佳答案 如果您正在从管道(PIPE_ACCESS_INBOUND或PIPE_ACCESS_DUPLEX)读取数据,当客户端关闭其管道末端时,您将收到ER

python - 使用 cmd.exe 或 PowerShell 或 Python 从 Windows 命名管道读取

我正在寻找一种快速方法来检查哪些数据进入命名管道(在Windows上)。有什么办法可以从cmd.exe或powershell或python做到这一点?实际上我只找到了创建命名管道而不是操纵它的方法。但是如何打开另一个程序创建的命名管道呢? 最佳答案 Powershell允许您使用整个.netapi,因此您可以使用pipefunctionintheframework. 关于python-使用cmd.exe或PowerShell或Python从Windows命名管道读取,我们在StackOv

vb.net - 使用命令行将 *.xls 或 *.xlsx 文件转换为管道分隔的 .csv 文件

我有一个这样的.xlsx文件:示例.xlsx:HeadingC1C2,01,02C3C4R114710R225811,1R3369,012我想将sample.xlsx文件转换为Output.csv文件[管道分隔]。请注意,我不需要任何双引号“C2,01,02”。输出.csv:Heading|C1|C2,01,02|C3|C4R1|1|4|7|10R2|2|5|8|11,1R3|3|6|9,0|12我知道如何使用如下手动步骤生成Output.csv:转到控制面板->区域和语言->其他设置->使用管道“|”更新列表分隔符字段。打开sample.xlsx->另存为->从下拉菜单中选择另存为类

c - 服务和应用程序之间的命名管道通信

所以我有一个在启动时启动的服务,我有一个应用程序放在启动文件夹中。因此客户端有时会很晚才连接到命名管道的服务器。这是我服务中的代码。hPipe=CreateNamedPipe(TEXT("\\\\.\\pipe\\popupPipe"),PIPE_ACCESS_DUPLEX|PIPE_TYPE_BYTE|PIPE_READMODE_BYTE,//FILE_FLAG_FIRST_PIPE_INSTANCEisnotneededbutforcesCreateNamedPipe(..)tofailifthepipealreadyexists...PIPE_WAIT,1,1024*16,102

.net - vb.Net- 命名管道 - NamedPipeServerStream - StackOverflowException

我正在尝试使用命名管道在Windows服务和WPF应用程序之间进行通信,两者都是用VB.Net编写的。Windows服务一直在运行。但是,在运行WPF应用程序几个小时后,将引发StackOverflowException。WPF应用程序中的PipeServerThread()是唯一在异常发生时在托管堆栈中重复调用的函数(我使用WinDbg对此进行了追踪)。服务包含NamedPipeClientStream,应用包含NamedPipeServerStream。当客户端和服务器通信时,服务器在经过几次检查后读取最终的客户端响应,然后将客户端字符串传递给代码中其他地方的函数。管道服务器随后被

windows - 将输出管道输出到由 [Diagnostics.Process]::Start 启动的 Windows 可执行文件?

当从[Diagnostics.Process]::Start启动它们时,如何将echoy管道发送到plink$meProcessID=([Diagnostics.Process]::Start("echoy|plink.exe","$($hostName)-l$($uPwd.GetNetworkCredential().Username)-pw$($uPwd.GetNetworkCredential().Password)\`"echo'$($uPwd.GetNetworkCredential().Password)'|sudo-S'/home/someuser/somescript.

c++ - 较小的管道如何加速数据流?

有一个1MB的管道:if(0==CreatePipe(&hRead,&hWrite,0,1024*1024)){printf("CreatePipefailed\n");returnsuccess;}一次发送4000个字节(bytesReq=4000)while((bytesReq=(FileSize-offset))!=0){//SenddatatoDecoder.cppthread,convertingtohumanreadableCSVif((0==WriteFile(hWrite,readBuff,bytesReq,&bytesWritten,0))||(bytesWritte