基本概念
课本概念:程序的一个执行实例,正在执行的程序等。
内核观点:担当分配系统资源(CPU时间,内存)的实体。
进程 = 一个程序加载到内存中的代码数据 + 内核中为其创建的相关数据结构(进程控制块PCB)
进程控制块PCB
进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。
课本上称之为PCB(process control block), Linux操作系统下的PCB是: task_struct
查看进程
ps -axj | grep process
通过上述命令可以查看进程,grep后的是你所运行的进程名称,作用是对其余进程进行过滤,筛选掉不需要的进程。
通过系统调用获取进程标识符
进程id(PID)
父进程id(PPID)
fork()函数的应用
fork有两个返回值。子进程返回0,父进程返回子进程的pid。
父子进程代码共享,数据各自开辟空间,私有一份(采用写时拷贝)。
#include <iostream>
#include <unistd.h>
#include <sys/types.h>
using namespace std;
int main()
{
pid_t id = fork();
if(id == 0)
{
while(1)
{
cout <<"我是子进程中fork函数的返回值:" << id << endl;
cout << "我是子进程,我的pid是:" << getpid() << " 父进程pid:" << getppid() << endl;
sleep(1);
}
}
else if(id > 0)
{
while(1)
{
cout <<"我是父进程中fork函数的返回值:" << id << endl;
cout << "我是父进程,我的pid是:" << getpid() << " 我的父进程pid是:" << getppid() << endl;
sleep(1);
}
}
return 0;
}