守护进程
时间:2016-12-14作者:华清远见
文章的开始,我们先来了解一下什么是守护进程。 在linux中,每一个系统与用户进行交流的界面称为终端。从该终端开始运行的进程都会依附于这个终端,这个终端称为这些进程的控制终端。当控制终端被关闭时,相应的进程都会被自动关闭。 守护进程能够突破这种限制,它从开始运行,直到整个系统关闭才会退出。如果想让某个进程不会因为用户或终端变化而受到影响,就必须把这个进程变成一个守护进程。那么如何创建一个守护进程呢,看下面的步骤: 一、守护进程的编写步骤: 1、创建子进程,父进程退出 每一步的作用与意义: 1、第一步完成以后,由于父进程已经先于子进程退出,子进程变成了孤儿进程,由init进程收养,在形式上做到了与控制终端的脱离。 相关代码: 2、第二步的作用是使进程能够完全独立出来,真正地做到脱离所有其他进程的控制,这里需要用到函数setsid(); setsid函数用于创建一个新会话,并使得当前进程称为新会话组的组长。 3、在进程运行过程中,当前目录所在的文件系统是不能卸载的,所以要用到第三步,将进程当前的工作目录修改一下,变成不可卸载的目录(“/”或”/tmp”),用到函数chdir。 4、第四步重设文件权限掩码,文件权限掩码是指文件权限中被屏蔽掉的对应位。把文件权限掩码设置为0,可以增加守护进程的灵活性。用到的函数为umask。 5、新建的子进程会从父进程那里继承所有已经打开的文件。在创建完新的会话后,守护进程应该脱离任何控制终端,应当关闭用不到的文件。这时候要用到函数getdtablesize,该函数的作用是获得文件描述符表的大小,由于咱们不知道从父进程那里继承了哪些文件描述符,所以就干脆都关一遍。(除了0,1,2) 相关代码: 经过上面的5步,守护进程就创建成功了,它脱离了终端的控制。 相关资讯
发表评论
|