Как реализовать конвейер Linux в Windows, используя C \ C ++ - PullRequest
1 голос
/ 13 декабря 2010

например, в linux следующая команда

$ firstProgram | secondProgram

переносит выходные данные firstProgram как входные данные для secondProgram

базовый код на C, который делает это в linux, равен

#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.спасибо

Ответы [ 2 ]

3 голосов
/ 13 декабря 2010

См. Win32 <a href="http://msdn.microsoft.com/en-us/library/aa365152%28v=VS.85%29.aspx" rel="nofollow">CreatePipe()</a>, чтобы создать анонимный канал. В этом примере (озаглавленном «Создание дочернего процесса с перенаправленным вводом и выводом») показано, как реплицировать код в Win32.

0 голосов
/ 13 декабря 2010

В версии для Linux вы в основном перенаправляете ввод и вывод. Это можно сделать с помощью собственного API-интерфейса Win32 или, если допустим .NET-библиотека System. *. Вы можете найти больше примеров на MSDN http://msdn.microsoft.com/en-us/library/ccf1tfx0.aspx

...