www.pudn.com > 7_code.rar > experiment_2.c


/*exc2.c实验二源码*/ 
#include  
#include  
#include  
#include  
#include  
#include  
#define MAXFILE 65535 
int main(void) 
{ 
	pid_t child1,child2; 
	int i; 
	child1 = fork(); 
/*创建子进程1*/ 
	if( child1 == -1 ){ 
		perror("child1 fork"); 
		exit(1); 
	} 
	else if( child1 > 0 ) 
		exit( 0 ); 
/*打开日志服务*/ 
	openlog("exc2_info", LOG_PID, LOG_DAEMON); 
/*以下几步是编写守护进程的常规步骤*/ 
	setsid(); 
	chdir( "/" ); 
	umask( 0 ); 
	for( i = 0 ; i < MAXFILE ; i++ ) 
	{ 
		close( i ); 
	} 
/*创建子进程2*/ 
	child2 = fork(); 
	if( child2 == -1 ){ 
		perror("child2 fork"); 
		exit(1); 
	} 
	else if( child2 == 0 ){ 
/*在日志中写入字符串*/ 
		syslog( LOG_INFO, " child2 will sleep for 10s "); 
		sleep(10); 
		syslog( LOG_INFO, " child2 is going to exit! "); 
		exit(0); 
	} 
	else{ 
		waitpid( child2, NULL, 0); 
		syslog( LOG_INFO , " child1 noticed that child2 has exited " ); 
/*关闭日志服务*/ 
		closelog(); 
		while(1){ 
			sleep(10); 
		}	 
	} 
}