使用Chez Scheme,我试图将外部命令的输出捕获到字符串端口中(请参阅https://www.scheme.com/csug8/io.html):
(define output
(with-output-to-string (lambda () (system "ls -a")))
)
(system "ls -a")
的输出显示在屏幕上,output
为空(在Linux上使用chezscheme 9.5.4作为脚本进行测试(。
Racket 8.3[CS]也可以使用相同的代码。
(define output
(get-string-all (car (process "ls -a"))))
似乎适用于MacOS
以下内容适用于Linux上的Chez Scheme 9.5.8。
(define (capture-standard-output command)
(let-values ([(in out err pid) (open-process-ports command 'block
(make-transcoder (utf-8-codec)))])
(get-string-all out)))
(capture-standard-output "ls -a") ;; => ".n..nbarnfoon"