Я работаю над кодом, связанным с каналами. Идея заключается в том, что у меня должен быть бесконечный цикл процесса и добавление данных в канал по мере его поступления (я проверяю это, читая файл и построчно переходя в цикл while).
Если я установлю другой процесс (тот, который читает канал) в спящий режим, чтобы прочитать весь файл, у меня не возникнет проблем, и я получу весь файл на выходе. Как только я удаляю спящий режим (так что теперь 2 процесса запускаются одновременно, когда 2-й процесс считывает информацию с конвейера по мере ее поступления), мой код переходит прямо в блок else моего кода ниже, и я никогда не вижу фактического вывода. Что я делаю не так?
close(pipe[1]);
sleep(5);
while (1) {
nbytes = read(pipe[0], buffer, 200);
if(errno != EWOULDBLOCK) {
printf("%s", buffer);
}
else {
printf("I am not blocked here\n");
sleep(1);
}
}
Спасибо