stdbuf does not work

Donald Krieger via cygwin cygwin@cygwin.com
Sat Aug 18 17:01:00 GMT 2018


Dear Eliot,
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.
Best - Don

      From: Eliot Moss <moss@cs.umass.edu>
 To: cygwin@cygwin.com 
 Sent: Saturday, August 18, 2018 9:14 AM
 Subject: Re: stdbuf does not work
   
On 8/18/2018 8:36 AM, Donald Krieger via cygwin wrote:
> Dear list,
> I require line buffered output from program1 and line buffered input to program2.The following works under Linux but not under Cygwin.   stdbuf -oL -eL program 1 |& program2
> 
> I've searched the archive without success.I have tried -o0 -e0 -i0 and have also tried
>    stdbuf -oL -eL program1 |& stdbuf -i0 program2
> I have a fresh installation of cygwin as of a few months ago:  uname -a              yields:CYGWIN_NT-10.0 DESKTOP-S92525R 2.10.0(0.325/5/3) 2018-02-02 15:16 x86_64 Cygwin
>    stdbuf --version    yields:stdbuf (GNU coreutils) 8.26Packaged by Cygwin (8.26-2)Copyright (C) 2016 Free Software Foundation, Inc....

Some thoughts to consider:

- -i0 means unbuffered; did you write the wrong description above?
- As noted in the strbuf man page, some programs don't use streams and thus are
  not affected by strbuf settings.  I agree this is not something likely to
  change for the same program ported from Linux to Cygwin.
- How do you have line endings set up on Cygwin or in any files you are
  processing?  The usual Windows line ending  being CR-LF instead of Linux's
  LF can confuse some programs.

It might also help potential responders to know a little more about what program1 and
program2 are.  Are they Windows or Cygwin programs?

Regards - EM

--
Problem reports:      http://cygwin.com/problems.html
FAQ:                  http://cygwin.com/faq/
Documentation:        http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



   

|  | Virus-free. www.avast.com  |


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list