在 Elixir 中启动和销毁系统进程

Start and destroy system process in Elixir

我想启动并销毁一个系统进程。

我知道要启动一个进程,我可以使用 System.cmd "my_app", [],但它不是 return 应用程序的 pid,我无法销毁(杀死)它。

Elixir 有管理子进程的方法吗?

代替System.cmd,您可以使用:

port = Port.open({:spawn_executable "my_app"}, [{:args, args}, :stream, :binary, :exit_status, :hide, :use_stdio, :stderr_to_stdout])

然后您可以通过 {:os_pid, pid} = Port.info(port, :os_pid) 获取进程的 PID,您可以使用 System.cmd("kill #{pid}").

终止进程

Elixir Ports

Erlang Ports

还有 Porcelain 这是 Elixir 社区中大多数人使用的