[erlang-questions] how to know who is the parent pid of a child pid?
Wed Apr 3 01:21:52 CEST 2013
There is no way. You need to have the parent give it to
the child through a message or as an argument when spawning
Slightly longer answer:
OTP hides the parent in the process dictionary (useful when handling
shutdown messages from supervisors and trapping exits). OTP processes
thus have the parent accessible.
Do not use OTP internals to do your bidding in there. They belong to
OTP libraries and you should stay out of its way (similarly, you
shouldn't play with links set by OTP or other pdict values).
For debugging purposes, however, given it's read only and short-lived
in terms of how much you depend on the information, using the process
dictionary's value is fine. You can do it by calling
`process_info(Pid, dictionary)` and hoping nobody shoved a GB of data
For most production purposes outside of debugging, if you need to pass
a parent, do it as an argument to a function that spawns the process.
This will make it easier to test things and the dependency will be
explicit, so fewer people get surprise breakage when they 'give away'
the process to a new adoptive parent (think of how people do it with
ports, sockets, or ETS tables).
Being explicit is usually the safest option, and the most readable one
On 04/02, Brisa Jim�nez wrote:
> Hi everyone,
> I have a question:
> How to know who is the parent pid of a child pid?
> Thank you very much!
> erlang-questions mailing list
More information about the erlang-questions