Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: open3 buffering in linux vs. os x

by BrowserUk (Patriarch)
on Jan 08, 2009 at 23:50 UTC ( [id://735048]=note: print w/replies, xml ) Need Help??


in reply to open3 buffering in linux vs. os x

Not a *nix user here, so your mileage might vary, but there is a trick I use successfully to cause interactive programs to flush their buffers under Win32 that might work for you.

Most interactive programs have some kind of 'status' command with a regular and easily recognisable output format. The trick is to issue one or more of these when you've reached a point that you need to know that you're seeing all the output from the previous command or batch of commands.

A quick look at the ProFit docs shows that it has a 'comment' command. Any line entered that starts with '#' is simply echoed to stdout. Which is great, as it is easy for your read loop to simple discard any line that starts with '#'.

With a little investigation, you can even determine the size of the output buffer and simply do print $writeFH '#' x $bufferSize;, and know that whatever output precedes that will have been flushed through after you've issued it.

It's not exactly a cool solution, but it is easy to implement and try.


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

Replies are listed 'Best First'.
Re^2: open3 buffering in linux vs. os x
by Lexicon (Chaplain) on Jan 09, 2009 at 01:13 UTC
    Heh, I was actually playing with the comment, status, and some other commands to see if they would flush the buffer automagically, but they didn't work. However, I didn't go so far as to try to overflow the buffer, but now that you mention it that might be an easy trick to pull off.

    Comes back 30 seconds later...

    The buffer is 4KB. Problem solved!

    Interesingly, only works if I unbuffer the output using fctrl.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://735048]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others about the Monastery: (4)
As of 2024-04-23 06:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found