进程是动态的,它是程序执行的过程,正在运行的程序,是程序执行和资源管理的最小单位。每个进程都有独特资源空间,当进程创建时,os会为进程分配4G的进程空间,企鹅每个进程空间都有1G内核空间和3G用户空间。(内核空间资源,用户空间资源)
进程分类:1.交互式进程:(经常使用),可以在前台运行,也可以在后台运行。
2.批处理进程:这类进程不必与用户进行交互,因此通常在后台运行。
3.守护进程:(重点)这类进程一直在后台运行,和任何终端都不关联。通常系统启动时开始执行,系统关闭时才结束。
进程的状态:
1.运行态 2.等待态 3.停止态 4.死亡态 5.僵尸态
进程的函数:
1.fork()
2.vfork()
3.fork()和vfork()的区别
1. fork():子进程拷贝父进程的数据段,代码段。vfork():子进程与父进程共享数据段。
2.fork():父子进程的执行次序不确定。 vfork():保证子进程先运行,在调用exec或_exit之前与父进程数据是共享的,在它调用exec或_exit之后父进程才可能被调度运行。
3.vfork()保证子进程先运行,在它调用exec或_exit之后父进程才可能被调度运行。如果在调用这两个函数之前子进程依赖于父进程的进一步动作,则会导致死锁。当需要改变共享数据段中变量的值,则拷贝父进程。
4.exit()和_exit()
5.wait() 阻塞等待子进程结束回收资源
waitpid() 回收子进程资源
6.exec函数
守护进程
特点:
1.守护进程是Linux中三大进程之一,始终运行在后台,通常系统开启时运行,系统关闭时结束。
2.独立于控制终端(与终端无关)
3.周期性执行某种任务或等待某些发生的事件。
创建守护进程:
1.创建子进程,父进程退出(子进程成为后台程序)
2.设置新的会话
3.设置工作目录
4.重设文件掩码
5.关闭从父进程继承下来的文件描述符
6.周期性执行任务
应用实例
创建一个守护进程将系统时间每隔5秒写入一个文件中