Changeset 835


Ignore:
Timestamp:
Jun 23, 2004, 10:32:29 AM (20 years ago)
Author:
Gary Byers
Message:

New external-process waiting stuff.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/level-1/linux-files.lisp

    r829 r835  
    619619
    620620
    621 (defun watch-fd-output (in-fd out-stream token)
    622   (incf (car token))
    623   (let* ((handler ()))
    624     (setq handler
    625           #'(lambda ()
    626               (when (fd-input-available-p in-fd 0)
    627                 (%stack-block ((buf 1024))
    628                   (let* ((n (fd-read in-fd buf 1024)))
    629                     (declare (fixnum n))
    630                     (if (<= n 0)
    631                       (progn
    632                         (remove-watched-fd-handler handler)
    633                         (without-interrupts
    634                          (decf (car token))
    635                          (fd-close in-fd)))
    636                       (let* ((string (make-string 1024)))
    637                         (declare (dynamic-extent string))
    638                         (%copy-ptr-to-ivector buf 0 string 0 n)
    639                         (write-sequence string out-stream :end n))))))))
    640     (add-watched-fd-handler handler))
    641   nil)
    642 
    643621(defun monitor-external-process (p)
    644622  (let* ((in-fd (external-process-watched-fd p))
     
    657635            (let* ((n (fd-read in-fd buf 1024)))
    658636              (declare (fixnum n))
    659               (format t "~& n bytes available")
    660637              (if (<= n 0)
    661638                (progn
Note: See TracChangeset for help on using the changeset viewer.