Это неопределенное поведение, посикс говорит:
Функция read () должна попытаться прочитать n-байтовые байты из файла, связанного с дескриптором открытого файла fildes, в буфер, на который указывает buf. Поведение нескольких одновременных чтений на одном канале, FIFO или терминальном устройстве не определено.