文章目录
1.进程的概念
1.1 多进程特性
1.2 概念
1.3 Linux下的进程结构
1.4 Linux系统中的进程类型
1.5 进程运行状态
2.进程系统调用
2.1 进程控制-进程的创建
进程创建:fork()
vfork与fork区别
2.2 exec函数族
exec函数族使用区别
2.3 exit和_exit
2.4 wait和waitpid
3.Linux守护进程
3.1 Linux守护进程编写步骤
创建子进程,父进程退出
在子进程中创建新会话
##3.2 改变当前目录为根目录
exec函数族使用区别
3.2 改变当前目录为根目录
3.3 重设文件权限掩码
3.4 关闭文件描述符
1.进程的概念
1.1 多进程特性
Linux支持 多进程 特性,可以最大化的使用cpu资源;用户可以在同一个cpu上运行多个用户程序。
多进程的原理是:时钟中断触发进程调度程序,调度程序分时运行多个进程。这就要求每个进程能够保留现场信息(cpu现场、系统资源、调度信息等)。
linux使用 进程描述符 task_struct数据结构记录现场信息,然后基于进程描述符管理进程,包括进程的创建、调度、消亡等操作。
1.2 概念
程序:经过编译的源代码,生成的一个可执行的文件。
进程:
1.进程是一个独立的可调度的任务 。
2.进程是一个抽象实体。当系统在执行某个程序时,分配和释放的各种资源
3.进程是一个程序的一次执行的过程。
进程和程序的区别:
** 程序是静态的,它是一些保存在磁盘上的指令的有序集合,没有任何执行的概念。
** 进程是一个动态的概念,它是程序执行的过程,包括创建、调度和消亡。
进程是程序执行和资源管理的最小单位 。
Linux进程在内存中包含三部分数据:
代码段:存放了程序的代码,代码段可以由机器中运行同一程序的数个进程共享。
堆栈段:存放的是子程序(函数)的返回地址、子程序的参数及程序的局部变量。
数据段:存放程序的全局变量、常数以及动态数据分配的数据空间。堆栈段和数据段不能由运行同一程序的数个进程共享。
linux系统至少有一个进程,一个程序可以对应多个进程,一个进程只能对应一个程序。
1.3 Linux下的进程结构
主要的进程标识:
** 进程号(Process Identity Number,PID)
** 父进程号(Parent Process ID,PPID)
PID唯一的标识一个进程。
Linux内核用进程描述符task_struct(在include/linux/sched.h定义)存放进程的相关属性。
1.4 Linux系统中的进程类型