Прошу прощения за тупой вопрос:)
то что пишется в stdin читается(другим объектом) из stdout.
Это можно представлять, как виртуальные файлы. Но очевидно, что между stdin и stdout так же есть подковерный канал, иначе как из одного данные попадают в другой?
Но, в таком случае, не совсем понятно, зачем это было дробить на 2 сущности, ведь то что пишется в какой то файл, может быть прочитано из этого же файла. Поэтому, непонятно, почему нельзя было сделать один общий поток, а не разделять его на эти 2?