如何使用open_port防止邮件泛滥?

时间:2016-06-12 13:48:29

标签: erlang erl

我尝试使用

一次通过标准输入读取100gb文件
Port = open_port({fd, 0, 1}, [in, binary, {line, 4096}]),

但是这会给我的系统充满信息,直到我用完ram。有没有让它像{有效,一次}与端口?还有io:get_line(),但我想知道这是否可行。

1 个答案:

答案 0 :(得分:1)

不,没有流量控制端口,所以如果你不能足够快地处理,你应该使用另一种处理方法。您可以使用

STDIN上设置二进制模式
ok = io:setopts(standard_io, [binary]),

如果您使用的是版本17或更新版本(存在影响性能的错误),则可以使用file:read_line(standard_io)来阅读它。