История изменений
Исправление vzzo, (текущая версия) :
pipe на самом деле является буфером, находящимся в пространстве ядра. При пересылке из произвольного дескриптора в произвольный в любом случае потребовался бы механизм буферизации, решили воспользоваться готовым. При этом через обычный fcntl мы можем настраивать размер этого буфера, не плодятся новые сисколлы. Функции, которые есть, на самом деле просто обёртки над этим буфером: передать кусок памяти в буфер, скопировать один буфер в другой, записать/прочитать в буфер из fd. То есть это всё, что мы можем делать с обычным read/write и char buf[], но запихнуто в ядро и вынесено в такой лаконичный интерфейс.
Исходная версия vzzo, :
pipe на самом деле является буфером, находящимся в пространстве ядра. При пересылке из произвольного дескриптора в произвольный в любом случае потребовался бы механизм буферизации, решили воспользоваться готовым. При этом через обычный fcntl мы можем настраивать размер этого буфера, не плодятся новые сисколлы. Функции, которые есть, на самом деле просто обёртки над этим буфером: передать кусок памяти в буфер, скопировать один буфер в другой, записать/прочитать в буфер из fd. То есть это всё, что мы можем делать с обычным read/write и char buf[], но запихнуто в ядро и вынесено в такой лакончиный интерфейс.