进程由UNIX系统首先实现,在此之前,多道程序只能通过批处理的方式来执行。进程概念提出之后,操作系统从此就焕然一新。
linux中进程的概念和UNIX中完全一致。
进程是什么?我们可以简单地用一句话定义:
进程是程序的执行。
对于这个定义,懂的人认为定义得非常准确,不懂的人却更加糊涂了。
理解进程,最好的方式,就是编写程序,创建一个进程。
单词fork的含义是分叉,父进程调用fork(),当fork()函数返回时,程序流程产生了分叉,子进程就生成了。
pid_t thePid;
thePid = fork();
if (thePid < 0)
{
//生成进程失败
return;
}
if (thePid == 0)
{
//子进程逻辑
}
else
{
//父进程逻辑
}
实际上,我们编写代码时,只能根据fork()的返回值来判断我们现在执行的是父进程的逻辑,还是子进程的逻辑:
1、对于父进程,fork()返回子进程的ID;
2、对于子进程,fork()返回0。
getpid的功能是获得当前进程的ID
可以发现:
(1)调用fork之前,进程的ID是13088;
(2)调用fork之后,父进程的ID仍然是13088,子进程的ID是13093;
(3)父进程和子进程在睡眠后再次运行,由操作系统调度,没有固定的次序。
谢谢您的阅读!