bashが親プロセスであることを確かめるプログラム

ターミナルでプログラムを呼び出すときに、親プロセスとなるは当然shell(bash)です。
シェルは内部でfork()を用いて、プロセスを複製し、その子プロセスにおいて新規のプロセスを呼び出しているのです。

今日は、システムコールgetppid()を用いて、親プロセス(すなわちbash)のプロセスIDを取得するプログラムを書きました。

$ vim parent_process.c

/* parent_process.c */
#include<stdio.h> //printf
#include <sys/types.h> //getppid, getpid
#include <unistd.h> //getppid, getpid

int main(void)
{
printf("My process ID is %d\n", getpid());
printf("My parent PID is %d\n", getppid());

return 0;
}


#コンパイル
$ gcc -o parent_process parent_process.c

#現在、動いているPIDを表示
$ ps
  PID TTY          TIME CMD
 3657 pts/0    00:00:00 bash
 3702 pts/0    00:00:00 less
 4973 pts/0    00:00:00 ps
$ ./parent_process 
My process ID is 4983
My parent PID is 3657