进程
概念:具有独立功能的程序在某个数据集合上的一次动态执行的过程,是操作系统资源分配和调度的基本单元。
类型:
- 后台进程
- 交互式进程
- 批处理进程
进程与程序的区别:
- 程序是静态的,它是一些保存在磁盘上的指令的有序集合,没有任何执行的概念。
- 进程是一个动态的概念,它是程序执行的过程,包括创建、调度和消亡。
- 进程是一个程序的执行过程。
创建fork():pid_t fork(void) 返回值分别代表父进程(正整数)、子进程(0)、出错(创建失败(-1));
int main()
{
pid_t pid;
if((pid=fork())==-1)
{
perror("error");
return -1;
}
else if(pid>0)
{
printf("父进程\n");
}
else if(pid==0)
{
printf("子进程\n");
}
return 0;
}
关于exec函数族
使用时机: 1.进程认为自己不能再为系统和用户做出任何贡献时,可以调用exec函数族中的函数;2.某个进程想执行另一个程序时,就可以调用fork函数创建子进程,然后调用exec函数
守护进程
概念:也就是我们通常所说的Daemon进程,是linux的后台服务进程。它是一个生存周期较长的进程,通常独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。
查看:
进程组:是一个或多个进程的集合。进程组由进程组ID来唯一标识。除了进程号(PID)之外,进程组ID也是一个进程的必备属性。每个进程组都有一个组长进程,其组长进程的进程号等于进程组ID,且进程组ID不会因组长进程的退出而受到影响。
会话组:是一个或多个进程组的集合。通常,一个会话开始于用户登录,终止于用户退出;或者说开始于终端打开,结束于终端关闭。会话期的第一个进程称为会话组长。在此期间该用户运行的所有进程都属于这个会话期,他
守护进程的编写步骤:
- 1.创建子进程,父进程退出
注意:父进程创建子进程之后退出,此时该子进程不就没有父进程了吗?守护进程确实会出现这么一个有趣的现象。由于父进程已经先于子进程退出,会造成子进程没有父进程,从而变成一个孤儿进程。在linux中,每当系统发现一个孤儿进程,就会自动由init进程收养,这样,原先的子进程就会变成init进程的子进程了。 - 2.在子进程中创建会话
- 3.改变当前目录
- 4.重设文件权限掩码
- 5.关闭文件描述符
线程
概念: