繁体   English   中英

Windows:是否可以将文本文件转储(定向)到命名管道中

[英]windows: is it possible to dump (direct) a text file into a named pipe

我有一个程序可以获取输入的设置,如下所示:

1)用户在命令提示符下输入命令

2)将命令提示符下的文本写入命名管道

3)管道另一侧的进程正在读取输入解析并执行命令

我希望能够在文本文件中存储一组命令,然后具有该文本文件的命名管道供稿。

有什么方法可以将管道和文件连接在一起? 还是我需要阅读文本文件并将其拆分为几行,然后将它们逐行写入管道?

您应该可以使用TYPE

TYPE "filename" | myprogram.exe

但是,如果您明确需要命名管道,或者需要将管道管道输送到已经运行的进程中,则无法使用。

尽管在这种情况下,您可以使用存根程序将其STDIN写入命名管道。

如果您使用命名管道,则有可能,

如果你看看这个 ,你可以看到他们使用普通CreateFile打开管道,考虑看看那个 ,好像你不能重定向,但你必须读,写,至少与API相同ReadFile WriteFile

void WriteToPipe(void) 

// Read from a file and write its contents to the pipe for the child's STDIN.
// Stop when there is no more data. 
{ 
   DWORD dwRead, dwWritten; 
   CHAR chBuf[BUFSIZE];
   BOOL bSuccess = FALSE;

   for (;;) 
   { 
      bSuccess = ReadFile(g_hInputFile, chBuf, BUFSIZE, &dwRead, NULL);
      if ( ! bSuccess || dwRead == 0 ) break; 

      bSuccess = WriteFile(g_hChildStd_IN_Wr, chBuf, dwRead, &dwWritten, NULL);
      if ( ! bSuccess ) break; 
   } 

// Close the pipe handle so the child process stops reading. 

   if ( ! CloseHandle(g_hChildStd_IN_Wr) ) 
      ErrorExit(TEXT("StdInWr CloseHandle")); 
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM