dup2

Czy popen() może tworzyć dwukierunkowe rury takie jak pipe () + fork ()?

Implementuję piping na symulowanym systemie plików w C++ (głównie z C). Musi uruchamiać polecenia w powłoce hosta, ale sam w ... aźnikiem do null-zakończony łańcuch, który musi być "r" do czytania, " w " do pisania, lub "r+" do czytania i pisania.

Może ktoś wyjaśnić co robi dup () w C?

Wiem, że dup, dup2, dup3 "tworzy kopię deskryptora pliku oldfd "(ze stron podręcznika). Jednak nie mogę go przetrawić. Jak w ... to oznacza, że może również przyjmować wartość stdin, stdout lub stderr jeśli założymy, że mamy close () -ed jeden z nich?