При использовании конвейеров unix (в C) балансирует ли ОС каждую запись () с помощью read () или балансирует ли она общее количество байтов? Например,

например, я хочу получить массив из 4-х баллов от ребенка к родителю. родительские вызовы

read(apipe, buf, sizeof(int)*4);

дочерние вызовы

for(int i=0; i<4;i++)
    write(bpipe, &array[i], sizeof(int));

делают ли это то, что я намереваюсь (получая 4 целых числа родителю), или родитель просто получает первое целое число?

Я пробовал искать этот ответ в другом месте, но либо я этого не делаю » Я не умею искать, или это слишком тонко (или, с другой стороны, слишком очевидно), чтобы литература могла на этом подробно останавливаться.

РЕДАКТИРОВАТЬ: Чтобы уточнить, я пытался написать сообщение из 4 частей и прочитать все 4 части за одно чтение (). См. Комментарии к принятому ответу.

5
задан Dmitri 3 October 2011 в 05:22
поделиться