如何在Elixir

时间:2016-12-07 19:27:14

标签: unix erlang pipe elixir mkfifo

是否有可能在Elixir中写入外部进程的标准输入? NIF现在是唯一的选择吗?

从Elixir开始,阻止并等待用户输入的过程:

pid = spawn(fn ->
   System.cmd("sh", [
    Path.join([System.cwd, "sh", "wait_for_input"]),
   "Hello world"
  ])
end)

我想实现类似的东西

IO.write pid, "Hello"
IO.write pid, "Hello again"

这是剧本

#!/bin/sh
while read data
do
  echo $data >> file_output.txt
done

1 个答案:

答案 0 :(得分:5)

您可以使用Port。请注意,read内置sh只会在将换行符发送到sh时获取数据,因此您需要在需要将缓冲数据发送到{{{ 1}}。

read