[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Command Line error on Sun4 CLISP



On Dec 2,  5:33pm, you wrote:
> Subject: Re: Command Line error on Sun4 CLISP
> > ... the 'lisp.run' command. This
> > generated the following error continuously:
> > *** - UNIX error 35 (EWOULDBLOCK): Operation would block
> 
> > Has anyone encountered this problem before?
> 
> Mr Hans Groschwitz <hans@wema10.elektro.uni-wuppertal.de> reported the
> same error. In his case it was related to using a pty on standard input/
> output, and went away when he linked without the readline library.
> 
> Can you investigate a bit more the circumstances that lead to the error
> in your case?
> 
> 
>                     Bruno Haible
>                     haible@ma2s2.mathematik.uni-karlsruhe.de
>-- End of excerpt from Bruno Haible

O.K. I've run the program through a debugger and the code that generates
the error is in the file 'stream.d' lines 931-936:
      #else # non-blocking I/O ` la SYSV
      { var reg2 int fcntl_flags;
        if (( fcntl_flags = fcntl(handle,F_GETFL,0) )<0) { OS_error(); }
        if ( fcntl(handle,F_SETFL,fcntl_flags|O_NDELAY) <0) { OS_error(); }
-->     ergebnis = read(handle,&c,1); # Zeichen lesen versuchen
        if ( fcntl(handle,F_SETFL,fcntl_flags) <0) { OS_error(); }
      }

The 'read' command generates the EWOULDBLOCK error. I think the error
must be linked to terminal I/O since the program runs fine when the
standard input is a pipe.

>From the 'unixconf.h' file the following are defined:
/* CL_IOCTL */
/* Define as the type of `request' in ioctl() declaration. */
#define IOCTL_REQUEST_T int
/* Define if the declaration of ioctl() needs dots. */
#undef IOCTL_DOTS
/* Define if you have the FIONREAD ioctl(). */
#undef HAVE_FIONREAD
/* Define if you need <sys/filio.h> for using ioctl's like FIONREAD. */
#undef NEED_SYS_FILIO_H
/* Define if you need <sys/ioctl.h> for using ioctl's like FIONREAD. */
#undef NEED_SYS_IOCTL_H


I am slightly confused as to why it is executing NON-BLOCKING code
if the system does actually BLOCK but have to confess that my knowledge
of UNIX system I/O is extremely limited.

I hope this is some help, if you require more information let me know.

David Arnold

-- 
-=- -=- -=- -=- -=- -=- -=- -=- -=- -=- -=- -=- -=- -=- -=-
David Arnold                             (daa93@aber.ac.uk)
Dept. Computer Science                   +44 (0)970-622449
University of Wales,Aberystwyth, Dyfed SY23 3DB, UK.
http://www.dcs.aber.ac.uk/~daa93
GCS -d+ p c++@ !l e++ m+++(*) s+/- n+ h(-) f !g w- t+@ y? 
-=- -=- -=- -=- -=- -=- -=- -=- -=- -=- -= -=- -=-- -=- -=-