[Ecls-list] ext:run-program always waits

Andie Kirkpatrick spacebat at ubermonkey.net
Wed Oct 8 12:03:20 UTC 2008


Hi,

I'm using ecl-0.9l and struggling with ext:run-program. When I evaluate:

(ext:run-program "/bin/echo" '("testing") :output :stream)

I get a stream from which I can read-line the intended output. However 
when I try to run any program that expects to consume its standard input 
before terminating, things fail:

(ext:run-program "/bin/cat" nil :input :stream :output :stream)

This never returns control, so following that with a write to the 
resulting stream doesn't work because I never get to that point. I 
figured that I needed to add :wait nil to the lambda list, but when I do 
that I get:

Unknown keyword :WAIT

However, digging into the source a bit, the only definition for this 
function is in src/c/unixsys.d starting line 74:

@(defun ext::run-program (command argv &key (input @':stream')
     (output @':stream') (error @'t') (wait @'t'))

I can use keywords input, output and error, but wait isn't accepted. Any 
ideas what I might be doing wrong? I was sure to remove all other ecl 
builds from my machine before building ecl-0.9l afresh to be sure there 
isn't an earlier version of the lib being linked in.

Thanks in advance for any help on this.

AK




More information about the ecl-devel mailing list