草庐IT

匿名管道

全部标签

windows - Windows批处理下无法使用 "git.exe fetch origin"内的管道

我写了一个批处理来检查和部署来自github的rails应用程序,批处理文件见下文。问题是git.exefetchorigin|find"remote:CountingObjects"总是返回errorlevel1,即使我们有新的提交也是如此。我必须先终止Rails应用程序,因为某些文件被锁定(*.jars)并导致gitpull命令失败。我搜索并找到了下面的主题,但即使使用git.exe而不是git.cmd,问题仍然存在。CheckifpullneededinGitgitbash:howtocheckifthere'sanewcommitavailable我尝试使用一个临时文件来存储g

php - 如何将 Windows 批处理脚本变量传递给管道命令

我有一个批处理脚本,它生成一个带有日期戳的文件名,用于通过php创建一个日志文件。该文件名存储在名为logFile的Windows批处理文件变量中。我想在我的管道tee命令中重用该变量,但是管道创建的子命令似乎没有继承或在上下文中没有来自父cmd控制台的变量。谁能展示如何在不使用临时文件或创建另一个批处理脚本的情况下解决这个问题?谢谢!执行作业.bat@echooffSETlogFile=|php-r"$d=newDateTime();$dateString=$d->format('Ymd-His');echo'C:\\temp\\logs\\'.$dateString.'-exec.

windows - 此时管道字符 "|"是意外的

我有以下脚本可以在多个JAR文件中找到一个类。类名作为字符串参数传递。setARG=%1for/R%Gin(*.jar)do@jar-tvf%G|find%ARG%>NUL&&echo%G给我以下错误>findClassInJar.bat"ContentPartition">setARG="ContentPartition"|wasunexpectedatthistime.>for/RG|find"ContentPartition">NUL&&echoG如何解决这个错误? 最佳答案 对于批处理文件中的循环变量,您应该使用%%而不是%

c# - 带 c# 服务器的命名管道客户端 (c++)

我想要做的是拥有一个用C++编写的命名管道客户端,以便能够与用C#编写的命名管道服务器进行通信。到目前为止,我一直无法做到这一点。CreateFile给我一个无效的句柄值,GetLastError返回2。这是c++部分(客户端)#include"stdafx.h"#include#include#include#include#includeusingnamespacestd;#definePIPE_NAMEL"\\\\.\\pipe\\TestPipe"#defineBUFF_SIZE512intmain(){HANDLEhPipe;hPipe=CreateFile(PIPE_NAM

windows - Windows 命令提示符 (cmd.exe) 中失败命令的管道输出

我正在尝试将stderr重定向到stdout,然后使用tee在屏幕上显示它并转储到文件。当运行一个有拼写错误的命令时(cmd响应'CommandNameWithATypo'不被识别为内部或外部命令、可运行的程序或批处理文件。)我希望这个错误消息是显示在屏幕上并写入tee命令中指定的文件。然而,运行这个:CommandNameWithATypo2>&1|teetest.txt我在屏幕上和文件中都没有输出(没有创建文件),就好像管道从未发生过一样。这是故意的吗?可能有解决方法吗? 最佳答案 问题是,“cmd最清楚将重定向放在哪里”/为了

windows - 管道 dcraw 输出作为 cjpeg.exe 的输入

这是我在WindowsPowershell中尝试的命令。.\dcraw-9.27-ms-64-bit.exe-c"C:\Downloads\RAW_CANON_10D.CRW"|cjpeg\cjpeg.exetemp.jpg但cjpeg没有获取输入并显示此消息。 最佳答案 您需要使用输入和输出参数调用cjpeg.exe。cjpeg.exe您正在使用生成错误的单个参数调用cjpeg.exe。cjpeg.exetemp.jpg实际上,您正在尝试将第一个命令的结果作为cjpeg命令的输入。如果dcraw返回输入文件的路径,那么您必须执行以

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