Re: stdbuf does not work
- Date: Sat, 18 Aug 2018 10:28:54 -0400
- From: Eliot Moss <moss@xxxxxxxxxxxx>
- Subject: Re: stdbuf does not work
On 8/18/2018 10:17 AM, Donald Krieger via cygwin wrote:
Thanks for getting back so quickly.Program1 is a windows routine, xgraph. http://www.xgraph.org/ms/index.htmlThis is a general purpose plotting program which writes out text whenever an operation is performed in its graphic window.
That text output is piped into Program2, a home-grown tcsh script.Program2 reads the xgraph text output one line at a time and uses it to update the display list files which xgraph is polling to keep its graphic window up to date.
Here is the test harness I'm executing inside a cygwin window. For test purposes, Program2 is cat. stdbuf -oL -eL xgraph | cat -A
Here's a typical output which is only seen once I've terminated xgraph by clicking the appropriate button in the graphic window. The only think I did while xgraph was running was click at one location in the graphics window; that's what generated the line: Clicked at (x,y) = (-0.62324, 0.255608)
XGraph v4.38^M$Window (800 x 594)^M$0 points read.^M$^M$Error: No dimensional data was read. Cannot determine axes ranges.^M$^M$ Clicked at (x,y) = (-0.62324, 0.255608)^M$Exiting XGraph.^M$
I tried 0 (zero) instead of L in the stdbuf switches just because.I also tried using stdbuf -i0 Program2in case that might make a difference.
I can easily eliminate the <cr>: stdbuf -oL -eL xgraph | tr -d "\015" | cat -AThis produces the same output but with the ^M 's removed.I don't know how to alter the windows line endings but would like to.
Thanks again and for any further thoughts.
Apparently stdbuf works by interposing stuff, via a loader PRELOAD technique,
before main in the program being run. I suspect this simply does not work
when applied to Windows programs, though I cannot say for sure.
What about this:
xgraph ... | strbuf -oL -eL tr -d '\015' | ...
That is, apply strbuf to tr, which is a Cygwin program. You could even apply it to cat.
Alternatively, if the xgraph of which you speak is this:
you might be able to re-build it under Cygwin, though doing so sometimes requires
some adjustments to a program or its build process (though a number of programs
build out-of-the-box pretty well). Clearly this is hardr than trying the suggestion
above :-) ...
Regards - EM
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple