[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Command Line error on Sun4 CLISP
- To: clisp-list <clisp-list@ma2s2.mathematik.uni-karlsruhe.de>
- Subject: Re: Command Line error on Sun4 CLISP
- From: daa93@aber.ac.uk
- Date: Tue, 6 Dec 1994 16:02:49 +0000
- In-reply-to: haible@ma2s2.mathematik.uni-karlsruhe.de (Bruno Haible) "Re: Command Line error on Sun4 CLISP" (Dec 2, 5:33pm)
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?
-=- -=- -=- -=- -=- -=- -=- -=- -=- -=- -= -=- -=-- -=- -=-