即时通讯尝试为我的系统编写一个脚本,从目录结构中填充静态html文件。产卵或从球拍系统
id更喜欢使用racket来完成任务,但我有diffaculty发现一些关键特性,最重要的是产生子处理的能力,比如C调用“system”。
什么是调用命令行并从球拍内部捕捉输出的最简单方法。
即时通讯尝试为我的系统编写一个脚本,从目录结构中填充静态html文件。产卵或从球拍系统
id更喜欢使用racket来完成任务,但我有diffaculty发现一些关键特性,最重要的是产生子处理的能力,比如C调用“system”。
什么是调用命令行并从球拍内部捕捉输出的最简单方法。
实际上有两个函数的工作方式类似于C中的系统,它们是:system
和system*
。 (有产卵关子过程的其他方式,但是这两个是最简单的工作很相似,许多其他语言。
在这两个,system
是最简便的一个,并在命令把你想作为一个运行。字符串这样,你可以做的事情,如:
(system "ls -l")
虽然这是一个稍微复杂的使用,我喜欢system*
好一点,因为它需要的参数作为一个列表,这意味着你可以更轻松与球拍一起玩。
(system* (find-executable-path "ls") "-l")
现在,您可以执行诸如更改正在运行的命令的输入和输出端口,甚至通过Racket的parameters更改当前工作目录。具体而言,您需要current-directory
,current-input-port
和current-output-port
。
您还可以使用多个with-
函数来更方便地更改输入和输出端口。
把它放在一起,例如,我可以将运行ls -l
的结果作为字符串使用以下代码保存。 (请注意,在球拍better ways to get the contents of your root directory,这仅仅是使用球拍的shell脚本的例子。)
(parameterize ([current-directory "/"])
(with-output-to-string
(λ()
(system* (find-executable-path "ls") "-l"))))
只要搜索的文档:http://docs.racket-lang.org/search/index.html ?q = system –
thanka用于指向我的正确方向,“系统”对于搜索引擎来说是一个浑浊的术语,所以很多结果 –
对于一般的搜索引擎,当然。但语言特定的文档可以足够缩小它们。 –