我正在尝试使用 Lwt_process.pread_lines 来获取一些命令的输出。在我的 Lwt_main.run 中,我调用它一次,然后通过运行良好的 Lwt_stream.map 开始分别处理每一行输出。
但是,在那个处理中,如果我调用另一个 Lwt_process.pread_lines,它似乎被忽略了:
Lwt_process.pread_line cmd
>>= Printf.printf "blah %s\n"
我不明白,我什至没有例外。我已经尝试过 pread_line 和 pread_lines,看起来 >>= 之后的任何内容都被忽略了。如果我使用 |> 虽然它会被调用,但我当然需要使用输出。
我已经阅读了文档,并查看了 Lwt_process 的来源,但我没有看到任何表明您不能随意调用它的任何信息,它似乎为每个进程创建了一个新管道,至少在输出上。当然,我的外部进程根本不使用标准输入,它只是对 df 命令的调用。我错过了什么吗?
我应该清楚:它没有挂起,程序确实完成得很好。它只是从不调用任何试图使用后面命令的结果的东西,第一个工作正常。
谢谢