我有一个启动子进程的应用程序。子进程从标准输入读取要操作的文件。对于某些操作,它需要一个输入文件,其中包含有关如何处理它所操作的文件的信息——我们称之为“控制文件”。控制文件的名称也从标准输入中读取。父应用程序可以使用临时文件作为控制文件,但我更愿意避免使用真正的磁盘备份文件。在Linux上,这很简单:我可以创建一个Unix管道,fork,在启动子进程之前关闭管道的各个端点,然后使用/dev/fd/3(或任何文件描述符)作为控制文件名,然后将控制数据写入父应用程序中的管道。或者,我可以在/tmp(或其他任何内容)中使用命名管道。我怎样才能在Windows上实现类似的功能?Windows
我正在使用一个旧程序生成它的输出到一个文件中。我可以在命令行上指定要使用的文件,但它必须转到一个文件(没有发送到stdout的选项)。我想在输出生成时流式传输(不要等到文件完成)。在*nix中,我会创建一个命名管道,并使用该"file"作为输出。这个(或类似的东西)可以在Windows中完成吗?可以用纯C#或仅用c/c++/pInvoke完成吗?有没有可以跨平台的库? 最佳答案 从您的.Net应用程序,您可以将遗留应用程序生成为Process,您可以为此定义其standardoutputstream。.您可以使用文件流或任何其他类型
给定两个网络套接字,在不以任何方式接触内容的情况下将数据从一个传输到另一个的最有效方法是什么?有没有一种方法(系统调用API)可以在内核空间中管理套接字到套接字的数据管道,类似于spliceprovidesonLinux?这就是我目前在Haskell中使用splice的方式:UsingGNU/Linuxsystemcall`splice`forzero-copySockettoSocketdatatransfersinHaskell. 最佳答案 Windows上的零拷贝API称为TransmitFile。它读取一个文件句柄并写入一个
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎与helpcenter中定义的范围内的编程无关。.关闭6年前。Improvethisquestion如何在不使用临时文件的情况下使用管道(ffmpeg+imagemagick)在Windows上构建视频缩略图表?
我正在使用命名管道在Windows中的2个进程之间共享一些数据。一个是Node进程,另一个是C#进程。这是我在我的Node进程中使用的代码示例:varnet=require('net');varPIPE_NAME="mypipe";varPIPE_PATH="\\\\.\\pipe\\"+PIPE_NAME;varL=console.log;varserver=net.createServer(function(stream){L('Server:onconnection')stream.on('data',function(c){L('Server:ondata:',c.toStri
我对管道知之甚少,但在我的VisualC++代码中使用管道连接了两个进程。管道运行良好,但我需要向其添加错误处理,因此想知道如果创建它的服务器崩溃时管道会发生什么情况,以及我如何从客户端进程中识别它?此外,如果客户端进程尝试访问同一个管道,在服务器崩溃后,如果没有错误处理,会发生什么情况?编辑:如果我继续创建新管道(比如使用系统时间作为管道名称),而前一个管道因服务器崩溃而损坏,会对内存产生什么影响?这些破管道会不会从内存中移除? 最佳答案 IIRCReadFile或WriteFile函数将返回FALSE并且GetLastError
我在C++中有以下代码:#include#include#include//std::cout#include//std::ifstream#include#includeusingnamespacestd;intmain(intargc,constchar**argv){wcoutfile_vec;file_vec.resize(file_size_in_byte);infile.seekg(0,std::ios::beg);infile.read(&file_vec[0],file_size_in_byte);out.write(&file_vec[0],file_vec.size
是否可以通过进程限制对命名管道的访问(图像名称或进程ID都可以)?此处的上下文是一个FilterMinidriver,它必须与执行大部分业务逻辑的用户空间服务进行通信。由于此通信是安全敏感的,我想保护它免受外部干扰,而默认情况下,驱动程序创建的命名管道似乎可以通过任何用户空间进程进行通信知道管道的名称(通过静态或动态分析很容易发现)。这是我已经知道的:管道是Windows中的安全对象,因此,它们具有安全描述符。这个安全描述符可以包含一个DACL,它应该限制对该对象的访问。我广泛搜索了条件ACE的文档和示例,我希望它们可以做我想做的事,但我没有找到任何相关内容。编辑:我接受了MSalte
我对Windows中的命名管道比较陌生。我需要一个类似于linux的socat的Windows工具来通过命名管道进行通信。Cygwin的socat可以访问窗口命名管道吗?如果是,怎么办? 最佳答案 我自己很快就弄明白了。使用putty和serial作为连接类型。在串行线路框中键入完整的管道名称。 关于windows-用于与Windows命名管道通信的程序,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com
我试图在我的c程序中创建一个管道,以将数据输入到另一个程序myProgram.exe。我需要做的就是让myProgram运行并从主程序发送“退出”。问题是我不知道如何在c中创建管道。我在某处得到了一个有效的Perl示例:open(myHandle,".../myProgram.exe");//...(dosomethingelse)...printf(myHandle,"quit");close(myHandle);有人可以帮我把它翻译成C代码吗?请记住,我在Windows下运行,因此没有可用的unistd.h。干杯,B 最佳答案