나는 스폰 이후에 바로 작업을 수행해야하는 erlang의 프로세스를 가지고 있습니다. 프로세스가 끝나면 부모에게 결과를 다시 보냅니다. 어떻게 그것을 생성 한 프로세스의 PID를 알아낼 수 있습니까?프로세스의 부모 PID를 어떻게 결정합니까
답변
entry 함수의 인수 중 하나로 child()를 전달해야합니다.
spawn_link(?MODULE, child, [self()]).
당신은 BIF는 산란/부모 프로세스에게 다음 다른 프로세스로부터 다시 등록 이름을 참조 이름 (원자)을 수득 등록 할 수 있습니다.
FUNC() ->
그런 다음 부모에게
부모 메시지를 보낼 %% 뭔가
를 수행 %%! 메시지....
레지스터 (모 자체())
스폰 (MODULE, FUNC [ARGS).
Getting Started With Erlang §3.3 및 The Erlang Reference Manual §10.3을 참조하십시오.
이름을 등록하여 할 수는 있지만 전혀 좋은 생각은 아닙니다. 이 게시물은 당신이 적극적으로 그것을하기를 낙담하고 문제를 설명한다면 더 좋을 것입니다. – Christian
개인 베타 (개인 베타가 시작된이 문제는 약 1 주일 전으로 거슬러 올라갑니다) 사이트의 토론 측면은 굉장히 잘 형성되지 않았습니다. 나는 정말로 의견을 표명하고 싶지 않고 단지 대체 접근법을 진술합니다. 나는 찬반 양론이 다른 답변/게시물에서 적절히 다루어 졌다고 생각한다. –
@Eridius의 답변은 선호하는 방법입니다. 이름을 등록하도록 프로세스를 요구하면 많은 프로세스가있을 때 고유 한 이름을 사용하는 번거 로움을 언급하지 않고 프로세스의 가시성을 높이는 것과 같은 의도하지 않은 부작용이있을 수 있습니다.
가장 좋은 방법은 확실히 하위 프로세스를 시작하기 위해 호출 된 함수의 인수로 전달하는 것입니다. 당신이 일반적으로 할 수있는 좋은 일이 funs입니다을 산란하는 경우, 일을주의 : 당신이 의도 한대로 수행되지 않습니다
spawn_link(fun() -> child(self()) end)
. (힌트 : self()가 호출되는 경우)
일반적으로 전역 적으로 알기를 원하지 않는 한 일반적으로 프로세스를 등록해야합니다. 즉, 전역 이름을 지정하지 않아야합니다. 재미를 유발한다는 것은 일반적으로 다른 모듈에서 호출 할 수없는 함수를 내보내지 않아야하므로 생성 된 함수를 내보낼 필요가 없다는 것을 의미합니다.
- 1. 리눅스는 어떻게 다음 PID를 결정합니까?
- 2. PHP에서 백그라운드 프로세스의 PID를 얻는 방법은 무엇입니까?
- 3. OS X에서 PID를 사용하여 프로세스의 현재 작업 디렉토리 가져 오기
- 4. Perl 시스템()으로 시작하는 프로세스의 PID를 얻으려면 어떻게해야합니까?
- 5. COM coclass를 인스턴스화하여 시작된 프로세스의 PID를 확인하는 방법은 무엇입니까?
- 6. C에서 부모 프로세스의 변수에 액세스하는 방법은 무엇입니까?
- 7. JDialog에 자식이 있는지 어떻게 결정합니까?
- 8. 파이썬에서 부모 프로세스의 환경을 변경할 수 있습니까?
- 9. MVC에서 컨트롤러를 어떻게 결정합니까?
- 10. 전송 속도를 어떻게 결정합니까?
- 11. 어떻게 자녀의 순위를 결정합니까?
- 12. 이미지로드가 완료되면 어떻게 결정합니까?
- 13. pyodbc는 인코딩을 어떻게 결정합니까?
- 14. QTextDocument의 높이를 어떻게 결정합니까?
- 15. 테이블이 생성되었는지 어떻게 결정합니까?
- 16. 유효한 SoapAction을 어떻게 결정합니까?
- 17. 컨트롤의 가시성을 어떻게 결정합니까?
- 18. 기본 테이블을 어떻게 결정합니까?
- 19. 엔티티가 저장되었는지 어떻게 결정합니까?
- 20. 아이폰에 특정 애플 리케이션을위한 PID를 얻는 방법?
- 21. 특정 프로세스의 하위 프로세스 찾기 (UNIX)
- 22. C++에서 하나의 Windows 프로세스가 다른 프로세스의 상위 프로세스인지 여부를 어떻게 정확하게 확인할 수 있습니까?
- 23. 리눅스에서 javaws jnlp 애플릿의 PID를 얻으십시오
- 24. 파일 사용 여부는 어떻게 결정합니까?
- 25. DLL이 참조되는 위치는 어떻게 결정합니까?
- 26. SharePoint 목록의 크기는 어떻게 결정합니까?
- 27. C# 컴파일러의 경로는 어떻게 결정합니까?
- 28. .NET은 TimeZoneInfo.TransitionTime에서 주를 어떻게 결정합니까?
- 29. WCF는 발송할 작업을 어떻게 결정합니까?
- 30. 배열의 차원 수는 어떻게 결정합니까?
OTP 및 'proc_lib'을 사용하는 다른 프로세스에 대해서는 [OTP 프로세스 관리자를 찾는 방법] (http://stackoverflow.com/questions/4132317/how-to-find-the-supervisor-of)을 참조하십시오. -an-otp-process) –