Search code examples
cbashunixgccsolaris

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


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)


Solution

  • 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;
    }