Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I'm doing some simulation work with Linux, and the code I'm working on right now only works under the assumption that, once a process has been assigned a PID by the kernel, that PID will remain the same until the process is killed. I would assume this is true but since I'm kind of new to the Linux world I just want to see if there are any special circumstances I ought to be aware of. Thanks!

share|improve this question
add comment

3 Answers

up vote 7 down vote accepted

Yes, it's guaranteed. Process will have the same PID even if its image will be replaced with another one by exec system call.

share|improve this answer
    
Well, a malicious programmer can break the guarantee, but this is generally true of well behaved programs. –  dmckee Aug 5 '12 at 1:08
1  
I can't agree with you, since fork creates new process with same image it's naturally that this new process has another PID value. In case from your answer I would say that program changes its PID (by changing its process), but not the process (and the question is about processes). –  xaizek Aug 5 '12 at 8:16
    
That is, of course, strictly true, but that simply reflects the definition of "process" that the OS uses. The user will see a continuity of state with a changing number, and if she was counting on the presence/absence of the PID to determine if some state was present on the machines this would be a problem. That's why I called the behavior malicious. –  dmckee Aug 6 '12 at 17:22
add comment

Well...mostly.

As other posters have said any particular process will retain it's PID indefinitely. Even through one or more instances of exec.

However, a programmer who wished to evade that guarantee on a unix box would have no trouble at all. He would simple fork, ignore HUP signals in the daughter and then kill the mother process. The result of which would be the daughter carrying on with a new PID and give the appearance that the process changed it's PID.

share|improve this answer
add comment

PID in Linux and Windows are unique to that process. PIDs will never change.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.