UNIX环境高级编程:进程管理和通信
setsid函数用于创建一个新的会话,并使得当前进程成为新会话组的组长 setsid函数能够使进程完全独立出来,从而脱离所有其他进程的控制。 #include <unistd.h> pid_t setsid(void) chdir(“/”) 改变工作目录 通常的做法是让“/”或”/tmp”作为守护进程的当前工作目录 。 在进程运行过程中,当前目录所在的文件系统是不能卸载的。 chdir函数可以改变进程当前工作目录 umask(0) 重设文件权限掩码 文件权限掩码是指文件权限中被屏蔽掉的对应位。把文件权限掩码设置为0,可以增加该守护进程的灵活性。设置文件权限掩码的 通常方法为umask(0) close(fd)关闭文件描述符 新建的子进程会从父进程那里继承所有已经打开的文件。 在创建完新的会话后,守护进程已经脱离任何控制终端,应当关闭用不到的文件。 fdtablesize = getdtablesize(); for (fd = 0; fd < fdtablesize; fd++) close(fd); 这些被打开的文件可能永远不会被守护进程读或写,但它们一样消耗系统资源,而且可能导致所在的文件系统无法卸载 (编辑:应用网_镇江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |