Można podłączyć wejście / wyjście jednego programu pod drugi program?

0

Moja kolej na tzw. głupie pytanie.

Mam program A, który chcę przetestować. Program A pobiera dane ze standardowego wejścia i wypisuje wyniki na standardowe wyjście.

Mam program B, który ma testować program A. Program B wypisuje na swoje standardowe wyjście polecenia do programu A, i pobiera ze swojego standardowego wejścia wyniki wypisane przez program A.

Przynajmniej tak to sobie wymyśliłem.

Da się jakoś w ten sposób powiązać programy A i B z poziomu shella?

Mogę oczywiście napisać ./B | ./A ale wtedy B nie będzie odbierał wyników za A. I na odwrót, mogę napisać ./A | ./B ale wtedy A nie będzie odbierał poleceń z B.

Jest jakiś sposób na to, czy jednak w programie testującym muszę bawić się z deskryptorami łącz i uruchamiać A z execa?

1

./B | ./A | ./B

1

może named pipes?
http://unix.stackexchange.com/questions/53641/how-to-make-bidirectional-pipe-between-two-programs

jeżeli uda Ci się to zrobić to napisz jak, bo mnie to ciekawi czy da się bez klepania dodatkowego kodu/

PS: do testowania okey, ale jak te appki mają ze sobą gadać często i długo to ofc tak nie powinno sie robic
PS2: nie ma w C++ niczego fajnego do testowania kodu tylko musisz robić takie cuda na kija? no właśnie.

0

./A < plik | ./B

plik zawiera polecenia do wykonania przez A, B sprawdza wyniki

0

Napisałem sobie prosty program niestety linux/unix specific. Może to coś ci pomoże. https://bitbucket.org/duga/simple-c-unix-testing-solution/

Wykorzystuje fakt dziedziczenia deskryptorów przez procesy potomne i fakt, że można podpinać dowolne deskryptory po STDIN, STDOUT.

1 użytkowników online, w tym zalogowanych: 0, gości: 1