siinit.c

来自「时间同步客户端,基于SOCKET编程,服务端运行与WINDOWS下.前面已上传.」· C语言 代码 · 共 43 行

C
43
字号
/**********************************************************************
*Copyright 2003 Toptvtech.Co.,Ltd.
*File name:siinit.c
*Author:houchao Version: 0.01 Date:2003/11/23
*Descriptor:init the daemon in SI daemon .
*Fuctions:
*	init_daemon(workdir):init
*History: no.
*
***********************************************************************/

#include <unistd.h>
#include <signal.h>
#include <sys/param.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
int init_daemon(workdir)
	char *workdir;
{	
	
	int pid;
	int i;
	if((pid=fork()))
	exit(0);//是父进程,结束父进程
	else if(pid< 0)
	exit(1);//fork失败,退出
	//是第一子进程,后台继续执行
	setsid();//第一子进程成为新的会话组长和进程组长
	//并与控制终端分离
	if((pid=fork()))
	exit(0);//是第一子进程,结束第一子进程
	else if(pid< 0)
	exit(1);//fork失败,退出
	//是第二子进程,继续
	//第二子进程不再是会话组长

	for(i=0;i< NOFILE;++i)//关闭打开的文件描述符
	close(i);
	umask(0);//重设文件创建掩模
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?