저는 이것이 언어에 대해 이해하지 못하는 부분이있는 아주 간단한 문제 중 하나라고 생각합니다. 하지만 나는 Elixir를 배우려고 노력 중이며, 제 프로그램이 완전히 끝나지 않았습니다. 여기에 최소한의 예가 있습니다. 내가 맨 아래에있는 Foo.go
행의 주석을 해제하고 elixir minimal.exs
그것을 실행하는 경우 I 만 spawn &Foo.go/0
행의 주석을 해제하면프로그램 종료가 조기에 끝나는 것 같습니다.
defmodule Foo do
def run(0) do
IO.puts("0")
end
def run(n) do
IO.puts(to_string n)
run(n - 1)
end
def go do
run(100)
end
end
# Foo.go
# spawn &Foo.go/0
지금, 그때는 0으로 아래로 100에서 모든 숫자입니다 의도 된 출력을 얻을 , 나는 일관되게 출력을 전혀 얻지 못한다.
그러나 두 행의 주석 처리를 제거하고 프로그램을 실행하면 프로그램이 종료되기 전에 첫 번째 줄에서부터 100까지 숫자를 얻은 다음 처음 몇 자리 숫자 (일반적으로 약 100에서 96 정도)를 얻습니다. 몇몇 이유. 그래서 나는 그 과정이 무작위로 종료되는 원인을 정확히 알지 못합니다.
이 혼란이 생겨난 이유는 내가 큰 프로젝트를 컴파일하려고 할 때 mix
을 사용하려고 시도했기 때문입니다. 프로그램이 시작된 것처럼 보였고, 작업의 일부를 수행 한 다음 종료했습니다. mix
조금 후에 실행이 중지됩니다. 그래서 나는 어쨌든 잠시 후 어쨌든 mix
이 그것을 끝내는 것처럼 보이면, Elixir 프로그램을 실행하는 관용적 인 방법이 어느 것인지는 확실하지 않다.
대단히 감사합니다. '믹스'에 관한 나의 문제는 엘릭서 프로세스에 대한 오해와 다른 언어가 프로세스라고 부르는 것에 대해 직접적으로 발생했습니다. –
또 다른 가능한 해결책은'elixir --ho-halt foo '로 프로그램을 실행하는 것입니다.실행 후 Erlang VM을 중단시키지 않습니다 "라는 메시지가 표시됩니다. 그런 다음 Ctrl-C를 두 번 입력하여 프로그램을 종료 할 수 있습니다. –