linux 怎样生成守护进程

int init_daemon(void)
{
	pid_t pid;
	int i;

	pid = fork();
	if(pid > 0)   //第一步,结束父进程,使得子进程成为后台
	    exit(0);
	else if(pid < 0)
	    return -1;

	//第二步建立一个新的进程组,在这个新的进程组中,子进程成为这个进程组的首进程,以使该进程脱离所有终端。
	setsid();
	//再次新建一个子进程,退出父进程,保证该进程不是进程组长,同时让该进程无法再打开一个新的终端。
	pid = fork();
	if(pid > 0)
		exit(0);
	//第三步,关闭所有从父进程继承的不再需要的文件描述符。   0 1 2 ------ 输入 输出 报错
	for(i=0;i<NOFILE;close(i++))
	
	//第四步,改变工作目录,使得进程不与任何文件系统联系
	chdir(“/”);
	//第五步,将文件屏蔽字设置为0
	umask(0);
	//第六步,忽略SIGCHLD信号,使得子进程不产生僵尸进程
	signal(SIGCHLD,SIG_IGN);

	return 0;
}



                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值