如何写一个简单的守护(精灵)进程原型
2011-11-28 15:00
274 查看
这里首先假设读者知道守护进程的大概概念,下面我们直接看程序。
//****************
环境,OS = Ubuntu 10.4 编译器 = gcc 4.5.2
******************//
//****************
环境,OS = Ubuntu 10.4 编译器 = gcc 4.5.2
******************//
int main(int argc, char **argv) { //因为下面要关掉某些信号,所以需要 struct sigaction sa; int i, fd, fdtablesize; //上来第一件事,调用umask将文件模式创建屏蔽字设置为0,为的是防止守护进程可能不具有对文件读写的权限 umask(0); //设置信号处理函数,SIG_IGN为忽略信号 sa.sa_handler = SIG_IGN; //sa.sa_mask这个成员的清零,一定要使用sigemtpy函数 sigemptyset(&sa.sa_mask); sa.sa_flags = 0; //对以下几种信号做忽略处理 sigaction(SIGTTOU, &sa, NULL); sigaction(SIGTTIN, &sa, NULL); sigaction(SIGTSTP, &sa, NULL); sigaction(SIGUP, &sa, NULL); //关闭父进程,使子进程成为孤儿进程,从而被init收养 if(fork() != 0) { exit(1); } //创建一个新会话 if(setsid() < 0) { exit(1); } //第二次退出父进程 if(fork() != 0) { exit(1); } //改变工作路径到root,防止出现工作目录被卸载的情况 if(chidr("/") == -1) { exit(1); } //关闭打开的文件描述符,包括标准输入输出和标准出错 for(fd = 0, fdtablesize = getdtablesize(); fd < fdtablesize; fd++) { close(fd); } //再次关掉信号 sigaction(SIGCHLD, &sa, NULL); //进入一个死循环让守护进程常驻内存 while(1) { //do somthing sleep(1); } //至此就完成了对一个守护进程的初始化 return 0; }
相关文章推荐
- 六十 如何写一个简单的守护(精灵)进程原型
- 如何写一个简单的守护(精灵)进程原型
- 总结如何创建一个守护进程
- linux 进程(关于守护进程、检查一个进程是否活着、如何写一个进程号文件)
- 一个简单的GNU 守护进程的创建
- 如何找到占用cpu最高的java线程?tomcat所在线程是守护线程吗?如何在linux中断一个Java进程中的线程,如何让一个守护线程不被结束
- 一个简单的linux守护进程
- 怎么写一个简单的守护进程
- 如何写一个linux精灵进程
- 一个简单的守护进程
- 如何编写一个守护进程daemon
- 一个简单的守护进程的编写
- 创建一个简单的守护进程
- 如何编写一个可靠的linux守护进程
- 如何编写一个可靠的linux守护进程
- 在Linux下利用crond实现一个定时任务并完成一个守护(精灵)进程
- 如何创建和关闭一个守护进程
- 简单实现一个守护进程(Daemon)
- linux 一个简单守护进程实例
- 如何给脚本写一个守护进程?