如何解决如何通过 Erlang 中的标准描述符与系统进程“交谈”?
我正在编写一个将非常频繁地调用系统进程(在本例中为 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 举报,一经查实,本站将立刻删除。