Я пытаюсь читать значения с плавающей точкой через канал, пока в нем есть данные.Проблема в том, что функция чтения никогда не возвращает 0 в моем случае, поэтому моя функция никогда не выходит из цикла.
Более того, я не могу использовать библиотечные функции.
Чтобы дать вам контекст: я хочусоздать дочерние процессы, которые запускают следующую функцию.Каждое значение с плавающей точкой отправляется родителем через канал и читается одним из дочерних процессов, который должен находиться в спящем режиме, чтобы позволить другому дочернему процессу прочитать 1 другое значение и перейти в спящий режим.Когда процесс просыпается, он должен проверить, может ли он вернуть значение из канала в спящий режим, в противном случае цикл заканчивается и дочерний процесс завершается.
void worker(int * pip){
close(pip[1]);
float buffer;
while(read(pip[0], &buffer, sizeof(float)) != 0){
sleep(buffer);
}
exit(1);
}
Каждое значение записывается родителем таким образом в цикле:
write(pip[1], &values[i], sizeof(float))