Getting Process Own Pid in C and C++

How to get the running process’ pid in C / C++?

In C and C++, you can call the getpid() library function which is a function from the POSIX library.

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

pid_t getpid(void);

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

An example C program to get self process ID getpid.c:

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

int main()
  pid_t pid = getpid();

  printf("pid: %lu\n", pid);

Build and run it:

$ gcc getpid.c -o s && ./s
pid: 7108


  1. Please update the reuslt section with actual result.

    $ gcc getpid.c -o s && ./s
    ppid: 7108

    But printf is
    printf(“pid: %lun”, pid);

    How come it prints “ppid” for print statement of “pid”.

  2. Hello, thanks for the idea but getpid() returns an int so the format in printf is abnormal : %lun should be just %d (and the n in lun is probably a typo)

    the error :
    error: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 2 has type ‘pid_t’ {aka ‘int’}

    x86_64 architecture, 64 bits

Leave a Reply

Your email address will not be published. Required fields are marked *