如何在windows下使用C\C++实现linux管道
例如,在linux中,以下命令
$ firstProgram | secondProgram
将firstProgram的输出作为secondProgram的输入,
在linux中实现这一点的C语言基本代码是
#include <unistd.h>
.
.
.
int fd[2];
forkStatus = fork();
if (status == 0)
{
close(1);
dup(fd[1]);
close(fd[1]);
close(fd[0]);
execv("firstProgram",...);
}
forkStatus = fork();
if (status == 0)
{
close(0);
dup(fd[0]);
close(fd[1]);
close(fd[0]);
execv("secondProgram",...);
}
close(fd[1]);
close(fd[0]);
我需要在windows中做类似的事情。 谢谢
for example, in linux the following command
$ firstProgram | secondProgram
carries the output of firstProgram as an input to secondProgram
the basic code in C that makes it happen in linux is
#include <unistd.h>
.
.
.
int fd[2];
forkStatus = fork();
if (status == 0)
{
close(1);
dup(fd[1]);
close(fd[1]);
close(fd[0]);
execv("firstProgram",...);
}
forkStatus = fork();
if (status == 0)
{
close(0);
dup(fd[0]);
close(fd[1]);
close(fd[0]);
execv("secondProgram",...);
}
close(fd[1]);
close(fd[0]);
i need to do something similar in windows.
thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
请参阅 Win32
CreatePipe()
创建匿名管道。 此示例(标题为“创建具有重定向输入和输出的子进程”)展示了如何在 Win32 中复制代码。See the Win32
CreatePipe()
to create an anonymous pipe. This example (titled "Creating a Child Process with Redirected Input and Output") shows how to replicate your code in Win32.在 Linux 版本中,您基本上是重定向输入和输出。这可以使用本机 Win32 API 或 .NET 允许的 System.* 库来完成。您可以在 MSDN http://msdn.microsoft.com/en- 上找到更多示例我们/库/ccf1tfx0.aspx
In the linux version you are basically redirecting the input and output. This can be done using the native Win32 API or if .NET is permissible System.* library. you can find more examples on MSDN http://msdn.microsoft.com/en-us/library/ccf1tfx0.aspx