2012-02-17 3 views
1

erlang 쉘에서 세 개의 erlang 프로세스가 생성되고 Pid, ​​Pid2, Pid3이라는 로컬로 등록됩니다. 그런 다음 함수 "exit/2"를 사용하여 "Pid"를 먼저 종료하고 싶습니다.erlang 쉘에서 "exit/2"기능 사용

([email protected])62> exit(lsaaa_dispatch,test). %lsaaa_dispatch is the above Pid's local registered name 
** exception error: bad argument 
    in function exit/2 
     called as exit(lsaaa_dispatch,test) 

왜 예외가 발생합니까? 그리고 세 가지 프로세스가 모두 종료되는 이유는 무엇입니까? 나는 Pman에서 찾을 수 없기 때문에.

답변

0

exit/2는 용어가 아닌 pid를 허용합니다. 그리고 커널 'erlang'모듈에 의해 정의됩니다.

exit(whereis(lsaaa_dispatch), test). 

두 번째 질문에서 이러한 프로세스가 사용자의 쉘과 어떤 관련이 있는지 생각해보십시오.

+1

예, 3 개의 프로세스가 셸 프로세스에 연결되어있는 경우 셸에 오류가 발생하면 모두 죽습니다. 셸의 모든 오류로 인해 셸 프로세스가 종료됩니다. 새로운 방법이 자동으로 시작되어 여러 가지면에서주의를 기울이지 않습니다. 연결된 프로세스를 죽이는 것을 제외하고. N.B. 이것은 버그는 아니지만 그것이 작동하도록 의도 된 방법입니다. – rvirding

관련 문제