Help: Guide needed in trying to delete/flush the content of a fifo file.

MRAB python at mrabarnett.plus.com
Tue Nov 16 14:13:23 EST 2010


On 16/11/2010 06:52, Ton wrote:
> On Nov 16, 1:47 am, MRAB<pyt... at mrabarnett.plus.com>  wrote:
>> On 15/11/2010 11:03, Ton wrote:
>>
>>
>>
>>> On Nov 14, 11:55 pm, MRAB<pyt... at mrabarnett.plus.com>    wrote:
>>>> On 14/11/2010 14:48, ton ph wrote:>    Hi python geeks,
>>>>>      I have  problem which i have been trying to find out for the past
>>>>> some days, i have a device which feeds info to my fifo continuosly, and
>>>>> a thread of mine reads the
>>>>> fifo continuosly. Now when i change a parameter in the device, it sends
>>>>> me different values. Now my problem is that , i want to get rid of the
>>>>> contents of my previous info which
>>>>> is present in my buffer of the fifo.So i want to flush the fifo content
>>>>> when my device starts sending different info .... i am implementing
>>>>> writing and reading the fifo  using two different threads.
>>>>> Please someone guide me solving my problem.
>>>>> I highly apologise everyone in case my post is not so clear...
>>>>> Thanks everyone in advance.
>>
>>>> When the info changes, the thread which is putting items into the fifo
>>>> could flush it just by getting items from it (using a non-blocking get)
>>>> until it's empty.
>>
>>> Hi Mrab,
>>>    Thanks for your immediate reply , can you please guide me with any
>>> tool or library function which i can flush my fifo content .. i use
>>> os.mkfifo() to make the fifo. Or is there any other way i could do
>>> this ...
>>> Thanks
>>
>> Ah, you're using pipes; I thought you might've been using a queue. I
>> don't know of a way of flushing a pipe.
>>
>> I wonder whether it's a good idea for the producer to keep filling the
>> fifo, because the consumer know how 'old' the info is when it arrives,
>> and there's your problem of discarding stale info. Perhaps the producer
>> should wait until the consumer has sent an acknowledgement before
>> sending more info.
>
> Thanks Mrab,
>    the problem now is that the producer continously dumps the
> information and since i am implementing the producer using the
> subprocess as like this
>
> cmd = ['my files']
> proc = subprocess.Popen(cmd, shell=True, bufsize=0,
> stdout=subprocess.PIPE, stderr=subprocess.STDOUT )
>
> while flag == True:
>       line = proc.stdout.read()
>
> Now what i want is to synchronise the problem of actual info the
> device is sending and the proper reading as the device is sending and
> not about reading the previous old info in the fifo... hope i have
> made clearer my prob. even i have tried proc.stdout.flush(), to flush
> the previous old info in the fifo. Thnks

Use two pipes, one each way. The consumer could use send a message to
the producer requesting an update, which the producer could send back
via the other pipe.



More information about the Python-list mailing list