/***********************************************************************
* Code listing from "Advanced Linux Programming," by CodeSourcery LLC *
* Copyright (C) 2001 by New Riders Publishing *
* See COPYRIGHT for license information. *
***********************************************************************/
#include
#include
#include
/* Returns the process id of the calling processes, as determined from
the /proc/self symlink. */
pid_t get_pid_from_proc_self ()
{
char target[32];
int pid;
/* Read the target of the symbolic link. */
readlink ("/proc/self", target, sizeof (target));
/* The target is a directory named for the process id. */
sscanf (target, "%d", &pid);
return (pid_t) pid;
}
int main ()
{
printf ("/proc/self reports process id %d\n",
(int) get_pid_from_proc_self ());
printf ("getpid() reports process id %d\n", (int) getpid ());
return 0;
}