在我们的Linux系统中,我们使用命名管道进行进程间通信(生产者和消费者).
为了测试使用者(Java)代码,我想实现(在Java中)一个虚拟生成器,它写入连接到使用者的命名管道.
现在,测试也应该在Windows开发环境中运行.因此,我想知道如何在Java中从Windows创建命名管道.在Linux中,我可以使用mkfifo(使用称为Runtime.exec()
),但我应该如何在Windows上执行此操作?
是否可以使用命令提示符通过管道传输到命名管道
dir >"\\.\pipe\my_named_pipe"
Run Code Online (Sandbox Code Playgroud)
my_named_pipe 是由 win32 应用程序创建的管道
#include <windows.h>
#include <iostream>
int main()
{
HANDLE pipe= CreateNamedPipe("\\\\.\\pipe\\my_named_pipe",PIPE_ACCESS_INBOUND,PIPE_TYPE_BYTE,1,500,500,NMPWAIT_USE_DEFAULT_WAIT,NULL);
char* buf = new char[501];
ReadFile(pipe,buf,500,NULL);
std::cout << buf << std::endl;
}
Run Code Online (Sandbox Code Playgroud)