当前位置: 首页 > 图文教程 > 网络安全 > 安全基础 > 守护进程的概念和建立方法

安全基础
黑客攻击行为的特征分析及反攻击技术
Windows 2000中隐患重重的十大“服务”
网页脚本攻击防范全攻略
防患于未然 轻松做好Windows 2000安全策略
用注册表为操作系统砌九堵安全墙
完善网站程序 脚本攻击防范策略完全篇
两步修改XP远程管理默认端口可防止入侵
消除Windows XP自身的安全隐患
保护Windows不受恶意代码攻击
如何关闭和限制电脑不用的端口
修改Windows 2000远程终端默认端口
操作系统被入侵后的修复过程
利用微软基准安全分析器打造你安全的系统
数字签名技术简介
检测和删除系统中的木马
QQ密码破解程序
P2P中保障Windows网络安全
在代码中查找安全性缺陷的专家提示
QQ安全的三大纪律八项注意
如何保证文件夹的绝对安全

安全基础 中的 守护进程的概念和建立方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-28   浏览: 83 ::
收藏到网摘: n/a

守护进程是一种后台运行彬接独立于所有终端控制之外的进程.
  正是因为守护进程独立于所有的终端控制,因此,他无法向通常程序那样将信息直接输出到标准输出和标准错误输出.威力解决这个问题,linux提供了syslog()函数.通过他,守护进程可以向系统的log文件写入信息.他在系统函数库syslog.h中的定义如下:
void syslog(int priority,char *format,...);
在一个进程使用syslog()的时候,应该先用openlog()打开系统纪录.

#include
void openlog(const *ident,int options,int facility);
参数ident是一个字符窜,通常他是程序的名字.
options可以是下面的值.
LOG_CONS 如果不能写入LOG值.则直接将其发送给主控台.
LOG_NDELAY 直接建立SYSLOGD进程而不是打开LOG文件
LOG_PERROR 将信息写入LOG同时也发送给标准错误输出.
LOG_PID 在每个信息中加入PID值.用一个

下面用一个示例来讲解:
#include
#include
#include
#include

#define MAXFD 64

main(){

int i;

if(fork())
exit(1); /*父进程退出,使子进程成为后台进程*/

setsid(); /*建立一个新的进程组,在这个新的进程组中,子进程成为这个进程组的首进程.这样,该进程就独立于所有终端之外*/

signal(SIGHUP,SIG_IGN); /*忽略SIGHUP信号*/

if(fork())
exit(1); /*再次fork(),保证该进程不是进程组的首进程.*/

chdir("/"); /*改变当前目录,使得进程不和任何文件系统关联*/

unmask(0); /*清除文件掩码,消除进程掩码对其所创建文件的影响*/

for(i=0;i close(i); /*关闭所有文件描述符*/

openlog(pname,LOG_PID,facility); /*打开记录*/