那么刚才进程在跑的时候是什么 ?
是CPU执行进程内部的所有代码,从开始到结束可能会有很长的时间,也就是说:
进程在调度的时候具有动态属性。
与进程有关的系统调用
这就是返回调用进程的pid,返回值相当于整数。
还有另一种查看进程的方式:
这种方式不是很常用:
ls /proc
这是查看内存的文件,蓝色的是进程pid,也是进程在内存的文件:
进入之后还能查看到这个进程的很多属性。
进程常见的调用
那么父进程 ID是什么呢?
因为进程每次都要进行随机分配地址,所以ID是变的,可是父进程ID没有变。
那我们查看一下父进程是什么:
这时候发现父进程是一个叫 -bash 的进程,他是一个命令行处理器,那么在处理这个程序的时候创建了一个子进程来运行这个代码,这是为什么呢?因为如果bash进程亲自运行但是报错就会停止工作,bash都停止工作了,我们后续想继续用Linux系统就无法正常使用了。
初始fork函数
然后再来看看fork函数,这个函数会颠覆语言方面的认知,因为这是系统方面的。
他说作用是创建一个子进程,并且有两个返回值。
很奇怪,之前学C/C++语言的时候从未听过如此离谱的话,现在写一个来测试一下。
其实大概是这个样子的:
这就是说等于两个程序在运行,只不过创建出来的子进程是从fork函数之后开始运行的。
总结:fork后续的代码父子进程共享,通过返回值的不同,让他们各自执行同一段代码。