我需要以Crystal中的字符串形式获取Process.exec的输出(而不是Process.run)。能做到吗?
我尝试过
Process.exec base, args
但是它仅将其放入控制台。我想把它放在一个变量中。
答案 0 :(得分:1)
正如注释中已经阐明的那样,您无法捕获使用Process.exec
执行的流程的输出,但是有一些方法可以执行流程并捕获其输出。
最直接的一个-反引号:
output = `echo "Hello world"`
在更复杂的情况下(例如,您需要分别捕获标准输出和标准错误输出,还需要获取其状态,或者对它的执行有更大的控制权),可以使用以下方式:
stdout = IO::Memory.new
process = Process.new("echo", ["Hello world"], output: stdout)
status = process.wait
output stdout.to_s