"raw" or "verbatim" PIDs?
Joe Armstrong (AL/EAB)
Tue Jul 11 11:20:34 CEST 2006
The problem with pid_to_pid/3 and pid/3 is that
they are not guaranteed to work forever.
Suppose you find out that the pid of your program is
<0.97.0> and that you say Pid = pid(0,97,0),
if the program has not died between the point in time
when you found out that is was <0.97.0> and the time when
you evaluate pid(0,97,0) then Pid will get the correct value.
If the process is dead or non-existent, you'll still get
a valid Pid
So if I do
pid(0,123,22) ! abc
This will work - it just sends a message to a non-existing process.
Now if the pid created by evaluating pid(X,Y,Z) responds to your
there is no guarantee that this is the process you thought it was.
This can happen if
- there is a very long time between finding the value of
the three integers representing the pid and creating a new Pid
- the original process died between the two operations above
- the Pid got "recycled" (ie is reused, for a new process,
this can happen after a long time)
This is very unlikely but can happen.
As the manual says - "It should not be used in
> -----Original Message-----
> From: owner-erlang-questions@REDACTED
> [mailto:owner-erlang-questions@REDACTED] On Behalf Of
> Thomas Lindgren
> Sent: den 11 juli 2006 09:38
> To: erlang-questions@REDACTED
> Subject: Re: "raw" or "verbatim" PIDs?
> --- Jon Slenk <jonslenk@REDACTED> wrote:
> > Ah, I finally figured out that I can use list_to_pid(),
> although there
> > are dire warnings in the documentation that it and
> > pid_to_list() should not be
> > used in application code. (Is there a "constructor"
> > for PIDs, or does one
> > have to use list_to_pid()?)
> PIDs are normally considered opaque handles (if you
> will) to processes, and ordinary usage is to construct PIDs
> with spawn/spawn_link/self, then pass them around.
> As far as I know, the list_to_pid/1 and pid/3 functions are
> basically intended for debugging. There are more such
> convenience functions (e.g.,
> processes/0) but using them in applications can lead to a
> system which is quite difficult to understand -- hence the warnings.
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam protection
> around http://mail.yahoo.com
More information about the erlang-questions