Author: Dieter Buerssner
Date: 13:16:58 09/01/04
Go up one level in this thread
On August 30, 2004 at 19:51:17, Robert Hyatt wrote: >On August 30, 2004 at 18:39:58, Dieter Buerssner wrote: > >>On August 30, 2004 at 15:39:45, Robert Hyatt wrote: >> >>>On August 30, 2004 at 14:40:25, Uri Blass wrote: >>> >>>>/* When using Standard C input functions, also check if there >>>>is anything in the buffer. After a call to such functions, >>>>the input waiting in the pipe will be copied to the buffer, >>>>and the call to PeekNamedPipe can indicate no input available. >>>>Setting stdin to unbuffered was not enough, IIRC */ >>>>//input_init(); >>>> if (stdin->_cnt > 0) >>>> return 1; >>>That will not work reliably. If you run with winboard/xboard long enough it is >>>guaranteed to hang for the reason I gave. PeekNamedPipe will not see input that >>>has already been read by the C library and tucked away in a library buffer. >> >>It seems to work very reliably for me. See the above comment in the code (I >>actually wrote that comment ...). >> >>Under Unix, setting stdin to non-buffered by the Standard C function setvbuf >>and using select seems to work reliably, too. I read all the input with the >>Standard C FILE * interface. >Yes. _if_ you disable buffering. But it seems that Uri has not, and has been >simply lucky... No. You don't need to disable buffering under Windows with the code Uri has posted. Read the comment/code again. It checks the internal buffer state. Uri's only problem seems to be, that that code is too slow to call it at every node. Regards, Dieter
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.