[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: