Is there a way to print the PID of the process that called my C binary

17,999

Solution 1

You should look at getpid and getppid functions from <unistd.h>.

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>

int
main(void)
{
    printf("%ld%ld", (long)getpid(), (long)getppid());
    return 0;
}

Solution 2

Use getppid. See man 2 getppid, here's the linux man page.

getppid() returns the process ID of the parent of the calling process

Two p’s because this is for the “parent process”.

Solution 3

Use getppid() to obtain the process id of a process' parent.

Share:
17,999
Awalias
Author by

Awalias

Updated on July 14, 2022

Comments

  • Awalias
    Awalias almost 2 years

    I need to know which perl script is using my C CLI.

    Using bash I can easily print "who" ran a script using:

    CALLER=$(ps ax | grep "^ *$PPID" | awk '{print $NF}')
    echo $CALLER
    

    Up to now I have been using this as a wrapper but it's not ideal. Is there a way to get this information from within C?

    (I'm running UNIX w/ gcc)