草庐IT

管道化

全部标签

c - WinAPI 命名管道位置

HANDLEpipe=CreateFile(L"\\\\.\\pipe\\my_pipe",GENERIC_READ,//onlyneedreadaccessFILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);我是winapi的新手,我想知道在硬盘上创建的“my_pipe”文件在哪里?我在二进制文件或源代码附近找不到它 最佳答案 Windows不遵循UNIX哲学“一切皆文件”,因此您使用内核API创建的命名对象不是文件,而是各

c++ - 管道和命令行参数

问题已经解决,重写代码如下:#include#include#includeintmain(intargc,char**argv){std::stringinput;std::vectorinputVector;while(std::getline(std::cin,input)){inputVector.push_back(input);}for(inti=0;i顺便说一句,在CMD和Powershell中的输出在视觉上是不同的-在Powershell中完成时看起来有两个端线(也就是说,每个正确的行之间有一个空行)我怀疑(但尚未调查)这是因为Powershell行末尾有很多空格,所以

windows - Teamcity 管道命令行输出到文件

是否可以在teamcity中调用命令行程序并将命令行程序的输出通过管道传输到文件? 最佳答案 您可能正在寻找类似于:http://confluence.jetbrains.com/display/TCD7/Command+Line的内容选项。在“构建步骤”中-您可以选择“命令行”作为运行器类型,并在“运行”中选择“自定义脚本”并编写要在“自定义脚本”文本区域中执行的shell命令行。echo"Hellothere!!"|teesomeFile.log如果你想...添加到工件路径 关于wi

c++ - 如何获取命名管道中要(可靠地)读取的数据长度?

我创建了一个带有以下标志的命名管道:PIPE_ACCESS_DUPLEX-双方读/写访问权限PIPE_TYPE_MESSAGE-已读消息类型PIPE_WAIT-阻塞读\写我从服务器端调用ConnectNamedPipe并等待客户端连接。我从客户端调用CallNamedPipe连接服务器并写入长度为N的数据。在服务器端:客户端连接后,PeekNamedPipe被调用以获取分配给读取数据缓冲区的缓冲区的长度。获得确切的缓冲区大小(N)后,我分配长度为N的缓冲区并调用ReadFile从Pipe读取数据。问题:问题是——在单处理器机器上,PeekNamedPipeAPI将缓冲区长度返回为0。因

windows - 将多个文件通过管道传输到一个批处理文件中(使用资源管理器突出显示)

当用户右键单击文件类型时,我已经可以运行一个批处理文件。我怎样才能使每个突出显示的组只运行一个实例并将所有文件作为参数。当前,当用户“shiftclicks”时,它为每个文件运行单个实例很可能有更好的表达方式...您可以明白为什么我在谷歌搜索时遇到了麻烦。谢谢 最佳答案 通常,文件关联多选调用会启动程序的多个实例,程序本身必须自行处理(或借助DDE或IDropTarget)在批处理文件中实现它会非常困难,这个例子应该让你开始:@echooffsetlocalENABLEEXTENSIONSsetguid=e786496d-1b2e-

c++ - 有没有办法检查外部数据是否通过管道传输到程序或程序是否自行运行?

即数据已经由另一个程序提供,或者用户必须手动输入。我指的是这两种状态:dir/b/s*.*|myprogram和myprogram在第二种情况下,程序将等待用户输入。有什么办法可以防止这种情况发生吗? 最佳答案 POSIX有isatty(),而VisualC++有_isatty(),如果文件描述符是终端或命令行,它们都将返回true,例如isatty(fileno(stdin))。 关于c++-有没有办法检查外部数据是否通过管道传输到程序或程序是否自行运行?,我们在StackOverfl

c++ - 管道通信 C++

我正在编写两个必须通信的小型C++应用程序。第一个将是一项服务,每隔一段时间,必须提醒用户注意某事。由于服务无法创建窗口,因此我将应用程序设计为两个独立的可执行文件。该服务将使用通知程序进行通信。该服务只需要向通知程序发送文本消息,通知程序会在系统托盘中显示一个气球。我正在尝试使用命名管道,我想我已经差不多了,但还不够。到目前为止我所拥有的是:在通知方:m_hInPipe=CreateNamedPipe(L"\\\\.\\pipe\\nhsupspipe",PIPE_ACCESS_INBOUND,PIPE_WAIT,1,1024,1024,60,NULL);意思是我创建了一个名为nhs

windows - 如何在 PowerShell 中使用 cmd 类型的管道 (/piping)?

在cmd(和bash)中,管道“|”以第一个命令输出的原始格式(作为字符串)将输出推送到另一个命令。在PowerShell中,从管道出来的所有东西都是对象(即使是字符串也是字符串对象)。因此,某些命令在PowerShell命令窗口而不是Windows命令窗口中运行时会失败。例子:dirc:\windows|gzip>test.gz当此命令在Windows命令提示符窗口中运行时,它可以正常工作-C:\windows的目录列表被压缩到test.gz文件中。PowerShell中的相同命令失败,因为PowerShell不使用cmd样式的管道并将其替换为PowerShell管道(使用文件系统项

c - Windows命名管道问题

我正在编写一个通过命名管道与用户空间应用程序通信的驱动程序。用户态应用程序通过调用CreateNamedPipe()创建命名管道,然后通过调用IOCTL将管道名称传递给驱动程序。然后,驱动程序通过调用ZwCreateFile()打开管道。然后,用户态应用程序进入一个循环,从管道读取请求、处理请求并将结果写回管道,即:while(1){ReadFromPipeProcessRequestWriteToPipe}驱动程序基本上是将请求写入管道,然后直接读回答案:WriteRequestToPipeReadAnswerFromPipe我的问题是,如果ReadAnswerFromPipe在应用

c++ - 使用命名管道的客户端服务器聊天

我已经设法将客户端连接到服务器并在它们之间发送数据,但我似乎无法让它们聊天。条件:-服务器必须打印出对话,以及两个客户端之间的对话。这是我的服务器代码#include#include#include#include#defineBUFSIZE512DWORDWINAPIInstanceThread(LPVOID);VOIDGetAnswerToRequest(LPTSTR,LPTSTR,LPDWORD);int_tmain(VOID){BOOLfConnected=FALSE;DWORDdwThreadId=0;HANDLEhPipe=INVALID_HANDLE_VALUE,hThr