UNIX中的精灵进程

王朝system·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

UNIX中的精灵进程

UNIX系统中有许多在后台运行,并且无控制终端的进程。我们把它叫精灵进程。在UNIX中我们可以用 ps -ef 查看,其TTY项用?标记。本文就精灵进程的特征,以及如何编写作一些探讨:

一 特征和编写规则

1. 因为精灵进程是在后台运行,所以首先调用fork()生成一个子进程,然后使父进程exit()。

2. 调用setsid()创建一个新的对话期。

3. 设定其工作目录。(chdir())

4. 将文件创建屏蔽字设置为0 。(umask(0))

5. 关闭不再需要的文件描述符。(close(int))

二 例子

# include <stdio.h>

# include <unistd.h>

int

main(void)

{

int pid ;

int s_pid ;

FILE *fp ;

if(( fp = fopen("/usr/log","w+")) == NULL)

{

fprintf(stderr,"Log File Open Error !\n") ;

exit(0) ;

}

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

return -1 ;

else

if( pid > 0 )

exit(0) ;

else

{

s_pid = setsid() ;

fprintf(fp,"SetSid := %d",s_pid) ;

umask(0) ;

chdir("/usr") ;

close(0) ;

close(1) ;

close(2) ;

sleep(100) ;

fclose(fp) ;

return 0 ;

}

}

精灵进程运行过程中的有关信息在/usr/log文件中。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航