<div dir="ltr"><br><div>If you want to do this portably, have a look at uiop:run-program. UIOP is a CL portability package which comes with ASDF (but can also be loaded separately). Of course it just calls through to CCL's run-program, and it should support all the keyword arguments you need (although they may be a little different in the portable UIOP version than in the CCL version - that's a one-time mapping you would have to figure out).  The developer of UIOP was very interested in making uiop:run-program into a robust dependable defacto standard way to spawn external programs from Common Lisp. </div><div><br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Oct 2, 2014 at 1:27 AM, Gary Byers <span dir="ltr"><<a href="mailto:gb@clozure.com" target="_blank">gb@clozure.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
<br>
On 10/01/2014 05:15:02 PM, Mark Klein wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
To add more detail to my previous question, I wonder if I can do something like the following:<br>
<br>
(defun test ()<br>
  (setq p (run-program "python" nil<br>
                       :wait t<br>
</blockquote>
<br></span>
In general, if you want to "interact" with the external-proceess (rather than wait for it to complete) it's preferable to say :WAIT NIL here.  (You likely got past this point, if you discovered that reading the process's output likely hangs.)<span class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                       :input :stream<br>
                       :output :stream))<br>
  (setq is (external-process-input-stream p))<br>
  (setq os (external-process-output-<u></u>stream p))<br>
  (loop do (format is "~A~%"  (read-line))<br>
           do (format t "~%~A" (read-line os))))<br>
<br>
The idea is that this would create a process running python and allow me to send and receive text to it. The code above doesn’t work, the read from the external process output stream never returns, but perhaps there’s a simple fix?<br>
</blockquote>
<br></span>
As Jeff Caldwell suggested, the output that the Python interpreter generates seems to be buffered on the Python side.  Starting Python with the "-i" option seens to defeat this buffering but also seems to cause it to print ">>>" prompts which aren't terminated by newlines after any other generated output.  (I guess that it can also generate "..."<br>
prompts in some cases.)  Reading the output generated by another process may be somewhat harder than just calling READ-LINE, and AFAICT Python's "-i" option can make it complicated in cases where it otherwise wouldn't be.<span class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
    Thanks,<br>
<br>
Mark<br>
<br>
<br>
Hi,<br>
<br>
I’d like to create input and output streams that connect with the python interpreter that comes included with Mac OS X so I can invoke python subroutines from lisp and get the results. Does anyone have any suggestions about how that can be done? I see that Clozure allows running other programs as subprocesses (<a href="http://ccl.clozure.com/ccl-documentation.html#Running-Other-Programs-as-Subprocesses" target="_blank">http://ccl.clozure.com/ccl-<u></u>documentation.html#Running-<u></u>Other-Programs-as-Subprocesses</a><u></u>) but it’s not clear to me if I can use that to interact with a program like python, as oppose to simply invoking a program like “cat” and getting the results it returns when it completes.<br>
<br>
Thanks for your help!<br>
<br>
Mark<br>
<br>
------------------------------<u></u>-<br>
Mark Klein<br>
<a href="http://cci.mit.edu/klein" target="_blank">http://cci.mit.edu/klein</a><br>
<br>
Principal Research Scientist<br>
Center for Collective Intelligence<br>
Massachusetts Institute of Technology<br>
<br>
Visiting Researcher<br>
Dynamic and Distributed Information Systems Group<br>
University of Zurich<br>
<br>
<br>
------------------------------<u></u>-<br>
Mark Klein<br>
<a href="http://cci.mit.edu/klein" target="_blank">http://cci.mit.edu/klein</a><br>
<br>
Principal Research Scientist<br>
Center for Collective Intelligence<br>
Massachusetts Institute of Technology<br>
<br>
Visiting Researcher<br>
Dynamic and Distributed Information Systems Group<br>
University of Zurich<br>
<br>
<br>
</blockquote>
<br></span>
------quoted attachment------<div class="HOEnZb"><div class="h5"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
______________________________<u></u>_________________<br>
Openmcl-devel mailing list<br>
<a href="mailto:Openmcl-devel@clozure.com" target="_blank">Openmcl-devel@clozure.com</a><br>
<a href="http://lists.clozure.com/mailman/listinfo/openmcl-devel" target="_blank">http://lists.clozure.com/<u></u>mailman/listinfo/openmcl-devel</a><br>
<br>
</blockquote>
<br>
______________________________<u></u>_________________<br>
Openmcl-devel mailing list<br>
<a href="mailto:Openmcl-devel@clozure.com" target="_blank">Openmcl-devel@clozure.com</a><br>
<a href="http://lists.clozure.com/mailman/listinfo/openmcl-devel" target="_blank">http://lists.clozure.com/<u></u>mailman/listinfo/openmcl-devel</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>My Best,<br><br>Dave Cooper, Genworks Support<br><a href="mailto:david.cooper@genworks.com" target="_blank">david.cooper@genworks.com</a>, <a href="http://dave.genworks.com" target="_blank">dave.genworks.com</a>(skype)<br>USA: 248-327-3253(o), 1-248-330-2979(mobile)<br>UK: 0191 645 1699<br>
</div>