一、进程
一个正在运行的程序称为进程。例如在屏幕上正打开两个终端窗口,则说明同一个终端程序正在做为两个进程而同时执行,而每个终端窗口又都在执行shell,则每个shell又是另外一个进程。
1.1进程标识
每一个Linux下的进程都要分配一个唯一的进程标识(pid),pid是一个16比特的整数。此外,除了init进程外,每一个进程都有一个父进程。
#include <stdio.h> #include <unistd.h> int main() { printf("The process ID is %d ",(int)getpid()); printf("The parent process ID is %d ",(int)getppid()); return 0; }
运行结果:
1.2创建进程
每一个进程都有唯一的标识pid,而子进程是一个新产生的进程,一定具有不同于父进程的pid,所以就可以pid来区分父进程和子进程。<1>通过getpid获知当前进程的pid值。<2>也可以根据fork系统调用的返回值来判断,即父进程执行完fork后的返回值就是子进程 的pid,而在子进程中该返回值为0,显然没有任何进程的pid会等于0,于是就是可以在程序中轻易区分当前到底是父进程还是子进程 正在执行。
#include <stdio.h> #include <sys/types.h> #include <unistd.h> int main() { pid_t child_pid; int i = 1; printf("The main program process ID is %d ",(int)getpid()); child_pid = fork(); if(child_pid != 0) { i = 0; printf("This is the parent process,with id %d and i = %d ",(int)getpid(),i); printf("The child's process ID id %d ",(int)child_pid); } else printf("This is the child process,with id %d and i = %d ",(int)getpid(),i); return 0; }