gpt4 book ai didi

ocaml - 如何在 OCaml 中将 Sys.command 的输出作为字符串?

转载 作者:行者123 更新时间:2023-12-02 04:23:03 26 4
gpt4 key购买 nike

在 OCaml 中,我有这段代码:

let s =Sys.command ("minisat test.txt | grep 'SATIS' ");;

我想获取 minisat test.txt 的输出 | grep "SATIS",对字符串 s 满足/不满足。

我得到以下输出:

SATISFIABLE   
val s : int = 0

那么,如何将该命令的输出输出为字符串。

另外,是否可以导入时间?

这是我在终端中尝试 minisat test.txt 时得到的输出

WARNING: for repeatability, setting FPU to use double precision
============================[ Problem Statistics ]=============================
| |
| Number of variables: 5 |
| Number of clauses: 3 |
| Parse time: 0.00 s |
| Eliminated clauses: 0.00 Mb |
| Simplification time: 0.00 s |
| |
============================[ Search Statistics ]==============================
| Conflicts | ORIGINAL | LEARNT | Progress |
| | Vars Clauses Literals | Limit Clauses Lit/Cl | |
===============================================================================
===============================================================================
restarts : 1
conflicts : 0 (-nan /sec)
decisions : 1 (0.00 % random) (inf /sec)
propagations : 0 (-nan /sec)
conflict literals : 0 (-nan % deleted)
Memory used : 8.00 MB
CPU time : 0 s

SATISFIABLE

最佳答案

如果您只使用 Sys,则不能。

但是,您可以创建一个临时文件(请参阅 Filename 模块的文档 here )并告诉命令在其中输出:

let string_of_command () =
let tmp_file = Filename.temp_file "" ".txt" in
let _ = Sys.command @@ "minisat test.txt | grep 'SATIS' >" ^ tmp_file in
let chan = open_in tmp_file in
let s = input_line chan in
close_in chan;
s

请注意,此函数是草稿:您必须正确处理发生的潜在错误。不管怎样,我想你可以根据你的需要调整它。

您可以使用 Unix 库或更高级的库来避免临时文件技巧。

关于ocaml - 如何在 OCaml 中将 Sys.command 的输出作为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28931694/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com