;;; -*- Mode:LISP; Base:10 -*- (defun find-all-unix-devices() (remove-duplicates (loop for dev in SI:ALL-SHARED-DEVICES when (typep dev 'UNIX:UNIX-STREAM-SHARED-DEVICE) collect dev) :test #'string-equal :key #'(lambda(x) (send x :name)))) (defun display-unix-devices() (loop for dev in (find-all-unix-devices) do (format t "~&~A owned by ~S" (send dev :name) (send dev :owner)))) (defun find-free-unix-devices() (loop for dev in (find-all-unix-shared-devices) when (null(send dev :owner)) collect dev)) (defun unix-stream-example() (let((dev (car (find-free-unix-devices)))) (if (null dev) (ferror nil "No Unix streams are free at this time") (progn (with-open-stream (s (open dev :direction :output)) (send s :line-out "test pattern")) (print (with-open-stream (s (open dev)) (send s :line-in)))))))