Ada*_*hip 7 stdin ipc stdout message-passing elixir
我正在尝试使用读取 STDIN 并写入 STDOUT 的外部进程。
我想在 Elixir 中编写与此等效的代码,而不使用外部库或包装脚本:
$ echo foo | nkf
foo
Run Code Online (Sandbox Code Playgroud)
即发送数据到标准输入,并从标准输出nkf返回转换后的结果,知道它已经完成了流的处理。nkf
我试图用端口来做到这一点,但问题是单个发送的消息可以在多个接收到的消息中返回,因此无法判断何时到达消息末尾(简化的示例,实际上"foo"是一个整个文件):
iex(1)> port = Port.open({:spawn, "nkf -u"}, [:binary])
#Port<0.7>
iex(2)> Port.command(port, "foo")
true
iex(3)> flush
{#Port<0.7>, {:data, "fo"}}
{#Port<0.7>, {:data, "o"}}
:ok
Run Code Online (Sandbox Code Playgroud)
如何在 Elixir 中获得与 Ports 相同的 bash 管道行为?
| 归档时间: |
|
| 查看次数: |
504 次 |
| 最近记录: |