在多种不同的 Common Lisp 实现(CLISP、CCL、SBCL)中执行shell命令的函数(转贴)

  • 0

在多种不同的 Common Lisp 实现(CLISP、CCL、SBCL)中执行shell命令的函数(转贴)

Category:语言学习 Tags : 

原文网址:https://my.oschina.net/freeblues/blog/196902

开始只知道 CLISP 中的是:

(ext:shell …)

然后查了一下,发现又多了解了两种,CCL 和 SBCL 分别有两个函数是:

(run-program …)

(sb-ext:run-program …)

接着继续查,发现有人写出这个很不错的函数,包含了好几种用法:

(defun sh (cmd)
    #+clisp
        (let ((str (ext:run-shell-command cmd :output:stream)))
            (loop for line = (read-line str nil)
             until (null line)
             do (print line)))
    #+ecl 
        (si:system cmd)
    #+sbcl 
        (sb-ext:run-program "/bin/sh" (list "-c" cmd) :input nil :output *standard-output*)
    #+clozure 
        (ccl:run-program "/bin/sh" (list "-c" cmd) :input nil :output *standard-output*)))

实际举个例子,就以 CCL 为例好了:

CL-USER> (ccl:run-program "/bin/sh" (list "-c" "echo 123") :input nil :output *standard-output*)
123
#<EXTERNAL-PROCESS (/bin/sh -c echo 123)[2596] (EXITED : 0) #x30200197619D>
CL-USER>
http://mip.i3geek.com

Leave a Reply

搜索

分类目录

公 告

本网站学习论坛:

www.zhlisp.com

lisp中文学习源码:

https://github.com/zhlisp/

欢迎大家来到本站,请积极评论发言;

加QQ群学习交流。