From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <4DFA1F3C.7090209@domain.hid> Date: Thu, 16 Jun 2011 11:20:28 -0400 From: Andrew Tannenbaum MIME-Version: 1.0 References: <4DF934BD.50505@domain.hid> In-Reply-To: <4DF934BD.50505@domain.hid> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Xenomai-help] rtcanrecv output line-buffering List-Id: Help regarding installation and common use of Xenomai List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: xenomai@xenomai.org I was trying to use the Xenomai RT-Socket-CAN rtcanrecv in a Tcl/Tk script GUI wrapper. rtcanrecv uses printf to stdout, and it line-buffers when attached to a tty, but it uses larger buffers (so it is unusable) when run from a script with no tty. Tcl does stdio with pipes rather than ptys (that is, Tcl thinks it has no tty for stdio). I think both bash and perl use ptys (and so don't have this problem). I haven't done a more thorough survey, but that's not the point. I think it would be nice to modify rtcanrecv so it can write stdout in line-buffered mode. If you think this is a good idea, please either set line buffering with setvbuf(stdout, NULL, _IOLBF, 0); at the top of src/utils/can/rtcanrecv.c:rt_task() or fflush(stdout); after the printf("\n") at the bottom of rt_task(), or you could add a command line getopt option for line-buffering that would do one of the above. -Andy