进程
1. 守护进程(Linux Daemon)
守护进程是运行在后台的一种特殊进程,独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的。
常见的守护进程包括:
- 系统日志进程syslogd
- web服务器httpd
- 邮件服务器sendmail
- 数据库服务器mysqld
守护进程的名称通常以d结尾,比如sshd、xinetd、crond等
守护进程一般在系统启动时开始运行,除非强行终止,否则直到系统关机都保持运行。守护进程经常以超级用户(root)权限运行,因为它们要使用特殊的端口(1-1024)或访问某些特殊的资源。
一个守护进程的父进程是init进程,因为它真正的父进程在fork出子进程后就先于子进程exit退出了,所以它是一个由init继承的孤儿进程。守护进程是非交互式程序,没有控制终端,所以任何输出,无论是向标准输出设备stdout还是标准出错设备stderr的输出都需要特殊处理。
2. 进程组
每个进程属于一个进程组;
每个进程组都有一个进程组号,该号等于该进程组组长的PID号;
一个进程只能为它自己或子进程设置进程组ID号;
2. 会话期
会话期是一个或多个进程组的集合;
setsid()
可以建立一个会话期;
若调用setsid()
的进程不是一个进程组的组长,该函数创建一个新的会话期;
先fork()然后exit(),此时只有子进程在运行;