1、进程是一个动态的实体,是程序的一次执行过程。
2、进程&程序:进程是动态的,是运行中的程序;程序是静态的,是保存在硬盘上的可执行的代码。
3、进程&线程:线程在进程内部,是比进程更小的能独立运行的基本单位。线程基本不拥有系统资源,它与同属一个进程的其他线程共享进程拥有的全部资源。多个线程可并行执行。
二、进程的结构:
三、进程的状态:
四、一些函数的介绍:
fork():
1、创建一个新的进程。(就是说从fork语句开始下面的代码会被原样复制过来执行一遍)
2、一次调用,两次返回:子进程返回0,父进程返回子进程的ID。出错返回-1
3、fork之后是父进程先执行还是子进程先执行是不确定的,这取决与内核所使用的调度算法。
子进程&父进程:
1、各自有自己唯一的ID
2、子进程不继承父进程设置的警告和文件锁
3、子进程的未决信号集被清空
vfork():
1、创建一个新的进程(子进程)共享父进程的地址空间。(就是说子进程完全运行在父进程的地址空间上,相当于浅拷贝咯)
2、一次调用,两次返回。
3、保证子进程先运行,当它调用exec或exit之后,父进程才可能被调度运行。
如果在调用exec或exit之前子进程要依赖父进程的某个行为,就会导致死锁
孤儿进程:父进程结束,子进程未结束
僵死进程:子进程结束,父进程未结束
exec函数族
wait()函数
waitpid()函数
ps:这章节的学习代码就不放了。(在虚拟机上,截屏好麻烦的...)
有个项目应用——实现自己的My shell 我会传到资源上。可以去看看哈!