Re: Кто чего посоветует?
On Wed, 25 Oct 2000, Victor Vislobokov wrote:
> Есть у меня задача. Брать данные с одного COM и отправлять
> их на другой COM предварительно кодируя. При это на выход
> всегда будет уходить больше, чем придет на вход.
> Я написал задачки для этого дела. Одна берет данные с COM
> и пихает их в файл. Вторая берет из файла и пихает их в другой COM.
> Но тут есть проблема. Как сделать так, чтобы после выпихивания
> из файла, этот файл обнулялся? Просто обнулять нельзя - ведь туда
> уже могут прийти новые данные. Да и вообще не хотелось бы
> копить все это в файле. Поэтому я подумал и решил использовать
> для этой цели FIFO.
> Но вот тут-то и началось интересное.
> Программа, которая у меня берет данные с COM, пишет их
> в файл, который окрывается как "a". Если так делать с FIFO, то
> при вызове fclose, другая программа, которая читает FIFO завершается.
Это SIGPIPE ей шлют - и она закрывается. И вроде это разумно коль обе
программы друг без друга не имеет смысла пускать.
> А если я держу FIFO всегда открытым, то туда попадают не все
> данные, которые приходят в COM порт.
В смысле? Не все данные от той программы? Не может такого быть -
разве что буфферизация потоков. Тогда надо fsync(fd) или fflush() после
каждой записи звать (или перевести поток в небуферезир. режим).
> Кто чего посоветует по этому поводу?
>
> Виктор
Best regards,
-Vlad
Reply to: