目录
1.会话
2.守护进程的特点
3.如何将一个进程变成守护进程
1.会话
在Linux下一个会话就是 终端文件 + bash,会话就是人类和计算机沟通的窗口和解释器。
可以在xshell中新建立一个会话验证一下。
复制会话
使用 ls /dev/pts 命令,查看有几个终端文件。
使用echo 1111 > /dev/0,看到哪个终端上显示1111。
下面的这个终端就是终端0
使用ps axj | head -1 && ps axj | grep bash命令 查看系统中bash的信息
我们看到两个bash属于不同的终端,这两个bash的sid(会话id)也是不同的。
2.守护进程的特点
1.守护进程不属于任何一个会话,所以不受用户登陆登出的影响。
2.守护进程会去关联终端文件,也就是不会向终端输入输出,但是可以向文件中输出(日志)。
3.守护进程独占一个会话。
4.守护进程一定是孤儿进程。
3.如何将一个进程变成守护进程
1.daemon就是将当前进程变成守护进程的接口。
2.daemon成功返回0,失败返回-1错误码被设置
3.nochdir如果设置为0,工作目录会被设置为根目录,其他情况当前工作目录保持不变。
4.noclose吐过设置为0,会将标准输入,标准输出重定向到/dev/pst/null这个终端文件中,最5.终输入和输出的内容都会被丢弃,其他情况则不改动文件描述符。
6.使用daemon的进程一定不能是进程组的组长,进程组组长通常就是第一个被创建出来的进程。
#include<iostream>
#include<unistd.h>
#include<sys/types.h>
int main()
{
int n = fork();
if(n == 0)//子进程
{
daemon(1,1);
//从这开始就会变成守护进程
}
return 0;
}