Chinaunix首页 | 论坛 | 博客
  • 博客访问: 92413594
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: C/C++

2008-04-16 17:36:57

作者:wxbeyond   

对于unix程序的幽灵进程,就相当于dos的常驻内存的程序,由于unix的进程都是由父进程创建的,一旦父进程终止的话,由它创建的子进程也将相应地终止;如何使进程成为幽灵进程,主要是需要将进程的属主修改,即通过setpgrp()改变进程的组,就可以脱离父进程而成为幽灵进程。下面就是一个简单的幽灵进程的例子:
daemon_setup()
{
 int fd;
 int  childpid; 
 if(getppid()==1) goto out; 

 signal(SIGINT, SIG_IGN);
 signal(SIGPIPE, SIG_IGN);
 signal(SIGQUIT, SIG_IGN);
 signal(SIGTTOU, SIG_IGN);
 signal(SIGTTIN, SIG_IGN);
 signal(SIGTSTP, SIG_IGN); 

 if((childpid=fork())<0)
  {
      fprintf(stderr,"can't folk child process"); 

  {
      fprintf(stderr,"can't folk child process");
      exit (1);
  }
 else if(childpid>0)           /* parent exit */
      exit(0); 

 if(setpgrp() == -1)
  {
    fprintf(stderr,"can't change process group\n");
        exit (1);
  } 

 signal(SIGHUP, SIG_IGN);
 signal( SIGCLD, SIG_IGN ); 

out: 


return; 

}


 
阅读(336) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~