Кстати про pipe и fork (сори за оффтоп). А как вот
такое "a basic implementation without error checking" пишут приличные сишники? Особенно фрагмент для потомка интересен. Там пять системных вызовов подряд, и по хорошему, как я понимаю, после любого из них надо проверить возвращаемый статус, вывести куда-нибудь ошибку из strerror(errno), закрыть всё, что осталось незакрыто, и выйти. И мне как-то не очень очевидно, как это написать без тонны бойлерплейта