我想启动并销毁系统进程。
我知道要开始一个过程,我可以使用System.cmd "my_app", []
,但它不会为应用程序返回一个pid而我无法销毁(杀死)它。
Elixir有没有管理子进程的方法?
答案 0 :(得分:2)
而不是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}")
终止流程。
答案 1 :(得分:1)
还有Porcelain这是大多数人在Elixir社区中使用的