[Openmcl-devel] sharing in external-process streams

Daniel Dickison danieldickison at gmail.com
Thu Nov 20 07:10:28 PST 2008


Check out ticket 216: I think this is the same issue.  I attached a  
patch to that bug that solves this in a different way, namely by  
adding a :sharing argument to process-run-function, which seems a bit  
more consistent with the other options available for the external  
processes API (but I don't feel strongly about it either way).
http://trac.clozure.com/openmcl/ticket/216

Daniel

On Nov 20, 2008, at 10:00 AM, Osei Poku wrote:

> Hi,
>
> The attached diff was my solution for allowing customization of
> the :sharing keyword when creating input and output streams for
> external processes.
>
> The problem I was trying to solve was not being able to read and/or
> write on the streams that are created for external-processes when
> using :stream for the :input and :output keyword arguments.  In
> particular, any reading and writing from threads that did not create
> the external-process failed due the the streams defaulting as :private
> to the creating thread.
>
> Comments?
>
> Osei
>
> Index: level-1/linux-files.lisp
> ===================================================================
> --- level-1/linux-files.lisp    (revision 10465)
> +++ level-1/linux-files.lisp    (working copy)
> @@ -766,6 +766,8 @@
>         (format stream " : ~d" (external-process-%exit-code p)))
>        (format stream ")"))))
>
> +(defvar *external-process-sharing* :private)
> +
>  (defun get-descriptor-for (object proc close-in-parent close-on-error
>                                   &rest keys &key direction (element-
> type 'character)
>                                   &allow-other-keys)
> @@ -789,6 +791,7 @@
>                                   :direction :output
>                                    :element-type element-type
>                                   :interactive nil
> +                                 :sharing *external-process-sharing*
>                                    :basic t
>                                    :auto-close t)
>                   (cons read-pipe close-in-parent)
> @@ -798,6 +801,7 @@
>                   (make-fd-stream read-pipe
>                                   :direction :input
>                                    :element-type element-type
> +                                 :sharing *external-process-sharing*
>                                   :interactive nil
>                                    :basic t
>                                    :auto-close t)
>
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel




More information about the Openmcl-devel mailing list