Autor Wątek: Pipeline obsłujący jednocześnie zapis i odczyt  (Przeczytany 1174 razy)

Offline dynax

  • Użytkownik

# Listopad 13, 2010, 17:21:14
Witam, od jakiegoś czasu próbuję napisać coś w rodzaje CGI Pipeline mogącego odpalić dowolny program przez CGI i pobrać wyniki. Używam do tego funkcji popen() (POSIX) lub _popen() (WIN32) która świetnie się sprawdza w odczytywaniu wyników wypisanych na stdout. Niestety gdy próbuję przekazać coś odpalonemu procesowi jako wejście (na stdin) to program nie działa.

W internecie przeczytałem, że pipeline odpalony przez popen() nie może jednocześnie być użyty do zapisu i odczyt danych (nawet w trybie "r+"). Na pewnej w mail-liście znalazłem TAKIE rozwiązanie, ale niestety nie wiem jak je zrealizować w C++. Znalazłem tylko rozwiązanie działające na Linuxie (chyba, że na Win32 jest alternatywa dla fork() i pipe() bez integracji CygWina) a mój projekt ma być przenośny Windows/Linux.

Próbowałem także użyć Boost.Process ale nie dość, że nie zadziałało to sama biblioteka wyjątkowo mi się nie spodobała bo wywalała mnóstwo warnigów na najwyższym stopniu czułości kompilatora (i dziwić się, że twórcy nie chcą jej przyjąć jako standard :P )

Ma ktoś jakiś pomysł? Z góry dzięki.
Pozdrawiam. 
« Ostatnia zmiana: Listopad 13, 2010, 22:22:25 wysłana przez Dynax »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Dab

  • Redaktor
    • blog

# Listopad 14, 2010, 19:39:36
Nie za bardzo widzę przenośne rozwiązanie. Tzn. rozwiązanie jest takie same: musisz przekierować dwa strumienie za pomocą pipes, ale implementacja będzie różna na Windows i *nix