Plaster

common-lisp
(defun list-open-file-streams (&key (max-streams 100)) (let ((streams (make-array max-streams :fill-pointer 0))) (sb-vm:map-allocated-objects (lambda (x type-code total-size) (declare (ignore type-code total-size)) (when (and (typep x 'sb-sys:fd-stream) (open-stream-p x) (< (length streams) (array-total-size streams))) (vector-push x streams))) :all) (coerce streams 'list)))