From: T. V. Raman
Subject: Trying to understand processes under lucid:
Date: 
Message-ID: <1993Jan5.195039.8245@cs.cornell.edu>
Hi!

I am trying to understand how multitasking works under Lucid Common
Lisp and am not getting very far.

After reading through the manual I tried:

(setf *p1 
  (make-process :name "play"
                :function #'(lambda(filename) (loop 
                              (when *continue*
                                (play filename ))))
                :args (list *beep* )))

play is a simple function which does:

(shell
(concatenate 'string
"play -v 1 -h "
file ))

and *continue* is a global variable.

Now when I evaluate the above setf form and then set *continue* to T
lisp starts playing the sound file that *beep* points to.

If I toggle the variable *continue* the sound stops, resumes if I
toggle again.

All this is as expected.

However if I do
(kill-process *p1 )

and then do (process-state *p1)
it shows up as :killed,
but now here's the surprising thing:
setting *continue* to T resumes the playing of the sound.

So what's playing the sound if the process *p1 has been killed?

And how do I get rid of *p1 entirely?

Thanks,

--Raman
-- 
   T. V. Raman <·····@cs.cornell.edu>Tel: (607)255-9202  R 272-3649
                       Office: 4116 Upson Hall,
Department of Computer Science, Cornell University Ithaca NY 14853-6201
                Res: 226 Bryant Avenue Ithaca NY 14850