v1 exec函数族
1.意义:1.1只要调用exec函数族就可以调用一个第三方程序
1.2进程当前内容被指定程序替换,就是比如说执行了exec函数族,那么下面的一大片就会被指定的程序替换了(进程当前内容被指定的程序替换,但进程号不变)
1.3实现让父子进程执行不同的程序
怎么实现父子进程执行不同程序呢?
让父进程创建子进程,子进程调用exec函数族,父进程不受影响
2. execl / execlp 函数 最后一个参数必须用空指针(NULL)结束
#include <unistd.h> 第0个参数必须要写,但没有使用
int excel(const char *path,const char *arg,...)
int excel(const char *file,const char* arg,...)
2.1 int excel(const char *path,const char *arg,...)
const char *path:执行文件的路径
const char *arg...传递给执行程序的参数列表
2.2 int excel(const char *file,const char* arg, ... )
const char *file 执行的程序的名称
2.3成功时返回指定的程序,失败时返回EOF
execl函数 和 execlp函数 的区别就是execl文件的路径要写全
execlp文件的路径可以不用写全
2.3 execv(p)函数
2.4 system函数
v2 exec函数族2
v3 守护进程概念
1.守护进程是linux三种进程之一(前台进程,批处理进程和守护进程)
精灵进程 是linux中后台服务进程,是生存周期较长的进程,存在于独立控制终端并且周期性的执行某种任务或者等待处理某些发生的事情。
2.守护进程的特点
后台服务进程 存在于任何独立控制终端
3.进程组
4.守护进程举例
5.守护进程创建方法步骤(理论)
1.创建子进程,父进程退出---- 子进程变成孤儿进程,被init进程收养
子进程在后台运行
2.子进程创建新会话 ---- 子进程成为新的会话组长,子进程脱离原先的终端
3.更改当前工作目录 ------- 守护进程一直在后台工作,其工作目录一直不能被卸载
重新设定当前工作目录cwd
4.重设文件权限掩码 ----- 文件权限掩码设置为0,只影响当前进程
5.关闭打开的文件描述符 -----关闭所有从父进程继承的打开文件
已脱离终端,stin /stdout /stderr无法再使用
6.守护进程创建方法步骤(实操)
1.创建子进程,父进程退出
子进程变成孤儿进程,被init进程收养 子进程的PPID变成1
查看mydae的进程号
2.子进程创建新会话
变成了会话组组长
3.更改当前工作目录、重设文件权限掩码
5. 关闭打开的文件描述符