How to get child PID in C?

Derek picture Derek · Feb 5, 2012 · Viewed 84.9k times · Source

I'm creating child processes in a for-loop. Inside the child process, I can retrieve the child PID with getpid().

However, for some reason when I try to store the value of getpid() into a variable declared by the parent process, the change is nullified when I check for it in the parent process. I'm assuming this has to do with some sort of process variable scope. Not really familiar with C, so can't be too sure.

Anyhow what is a way of storing the result of getpid() of a child PID (when called from the child process) into a variable in the parent process?

Or maybe another approach is storing fork() into a variable in the parent and calling some function on that variable to retrieve the child's PID? I don't know how to do this either, so if this is the better way, how would you do this?

Answer

MByD picture MByD · Feb 5, 2012

fork already returns the child's pid. Just store the return value.

look at man 2 fork:

RETURN VALUES

 Upon successful completion, fork() returns a value of 0 to the child process and
 returns the process ID of the child process to the parent process.  Otherwise, a
 value of -1 is returned to the parent process, no child process is created, and
 the global variable errno is set to indicate the error.