У меня возникла проблема в моей программе, использующей каналы.
Я использую каналы вместе с fork / exec для отправки данных другому процессу
Что у меня есть, примерно так:
//pipes are created up here
if(fork() == 0) //child process
{
...
execlp(...);
}
else
{
...
fprintf(stderr, "Writing to pipe now\n");
write(pipe, buffer, BUFFER_SIZE);
fprintf(stderr, "Wrote to pipe!");
...
}
Это нормально работает для большинства сообщений, но когда сообщение очень большое, запись в канал заходит в тупик.
Я думаю, что труба может быть заполнена, но я не знаю, как ее очистить. Я пытался использовать fsync, но это не сработало.
Кто-нибудь может мне помочь?