Damien Kick <dkick1@email.mot.com> wrote:
+---------------
| I don't understand why the following example is encountering an error
| attempting to READ-CHAR from the stream returned calling PROCESS-PTY
| on the result of RUN-PROGRAM.
...
| CMU Common Lisp 18e, running on csdndev08
| * (progn
| (setq *p* (run-program "uname" nil :wait nil :pty t))
| ... )
+---------------
I've never managed to use :PTY for anything, but specifying the
options ":OUTPUT :STREAM" & ":ERROR :OUTPUT" usually works for me:
> (let ((p (run-program "uname" nil :wait nil
:output :stream :error :output)))
(dbgv (here) ; handy little debugging macro
p
(process-status p)
(process-output p)
(process-error p)
(read-line (process-output p) nil nil)
(read-line (process-output p) nil nil)
(process-status p)
(process-close p)))
DBGV: @HERE:
P = #<process 87939 :RUNNING>
(PROCESS-STATUS P) = :RUNNING
(PROCESS-OUTPUT P) = #<Stream for descriptor 8>
(PROCESS-ERROR P) = #<Stream for descriptor 8>
(READ-LINE (PROCESS-OUTPUT P) NIL NIL) = "FreeBSD"
(READ-LINE (PROCESS-OUTPUT P) NIL NIL) = NIL
(PROCESS-STATUS P) = :EXITED
(PROCESS-CLOSE P) = #<process 87939 :EXITED>
NIL
>
[Note: Without the second READ-LINE it doesn't see that it's exited.]
-Rob
-----
Rob Warnock, PP-ASEL-IA <rpw3@rpw3.org>
627 26th Avenue <URL:http://rpw3.org/>
San Mateo, CA 94403 (650)572-2607