您的位置:首页 > 运维架构 > Linux

Linux 下创建守护进程

2007-11-14 21:45 591 查看
1,创建子进程,父进程退出


pid = fork();


if (pid >0)




...{


exit(0);


}



2. 在子进程中创建新会话

使用setsid

主要是使进程摆脱原会话的控制,摆脱原进程组的控制,摆脱原控制终端的控制。

3.改变当前目录为根目录

使用fork创建的子进程继承了父进程的当前工作目录,由于进程运行过程中,当前目录所在的文件系统(比如/mnt/usb等)是不能卸载的,这对以后使用会造成很多不便,比如系统由于某种原因需要进入单用户模式)因此,通常将“/”做为守护进程的当前工作目录 使用chdir

4.重新设置文件权限演码

umask(0)

5.关闭文件描述符

for (i=0; i<MAXFILE;i++){

close(i);
}

详细代码




/**//**


* @file: daemon.c


* @brief: daemon


* @author: wangbing


* @date: 2007-11-9


* @version: 1.0


*/




#include <stdlib.h>


#include <string.h>


#include <unistd.h>


#include <signal.h>


#include <sys/param.h>


#include <errno.h>


#include <sys/file.h>


#include <sys/ioctl.h>


#include <sys/stat.h>


#include <sys/time.h>




int daemon_start(void)




...{


int i;


pid_t pid;




if( (pid = fork()) < 0)




...{


return(-1);


}


else if (pid!=0)




...{


exit(0);


}




setsid();


chdir("/");


umask(0):


for (i=0; i<MAXFILE; i++)




...{


close(i);


}


return 0;


}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: