问题描述
我正在编写一个将非常频繁地调用系统进程(在本例中为 Z3 求解器)的工具,但我在设置时遇到了麻烦。
我想做什么:
- 使用
/usr/bin/z3
标志启动-in
进程 - 在进程等待标准输入时保持活动
- 向其
stdin
发送一些字符串 - 从
stdout
中读取一行 - 可能转到 3
- 礼貌地终止进程
到目前为止我尝试过的:
-
os:cmd
– 这个东西似乎不支持stdin
- 使用
port
,但它与我的用例不匹配或我不理解。我的尝试:
main() ->
process_flag(trap_exit,true),Port = open_port({spawn,"z3 -in"},[{packet,2}]),Port ! {self(),{command,"(check-sat)\n"}},receive
X ->
X
end.
...但它让我无限等待。但是出于某种原因,这适用于 cat
。
充其量我想用 Erlang 进程包装一个 os 进程,但我允许一些权衡和解决方法。最惯用的做法是什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)