【发布时间】:2016-05-03 12:12:28
【问题描述】:
我想启动和销毁一个系统进程。
我知道要启动一个进程,我可以使用System.cmd "my_app", [],但它不会返回应用程序的 pid,我无法销毁(杀死)它。
Elixir 有管理子进程的方法吗?
【问题讨论】:
我想启动和销毁一个系统进程。
我知道要启动一个进程,我可以使用System.cmd "my_app", [],但它不会返回应用程序的 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}") 终止该进程。
【讨论】:
还有Porcelain,这是 Elixir 社区中大多数人使用的
【讨论】: