编写代码
vim forktest1.c
#include<stdlib.h>
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
int main(){
int child;
if(!(child=fork()))
printf("This is son,his pid is:%d.and his ppid is:%d\n",getpid(),getppid());
else
printf("This is father,his pid is:%d.and his ppid is:%d\n",getpid(),getppid());
sleep(120);
}
编译程序
gcc forktest1.c -o forktest1
后台运行
./forktest1 &
可以看到,后台运行时,创建了进程号为 4979 的 forktest1 的进程;
而fork()会复制父进程的副本,即由 4979 号进程创建与父进程同名的 forktest1 进程,进程号为 4980;
源代码中 sleep(120) 会让这一对父子进程在后台运行120秒。
所以,在这120秒内,输入
ps -aefo user,ppid,pid,cmd
可以看到进程列表中多了这两个 forktest1 进程(父子进程)
或者在这120秒内,输入
pstree
可以看到,进程树状结构下有这两个 forktest1 进程(父子进程)