linux 守护进程(daemon)的创建方法
来源:互联网 发布:可视化网络拓扑管理 编辑:程序博客网 时间:2024/06/08 13:16
用C语言来创建守护进程方法大致如下:
- int init_daemon(const char *pathname)
- {
- struct sigaction act;
- int max_fd, i, ret;
- char buf[100];
- /* 第一次调用fork,为setsid做准备 */
- ret = fork();
- if( 0 > ret )
- {
- fprintf(stderr, "error in first fork./n");
- exit(1);
- }
- else if( 0 != ret) /* 父进程退出 */
- exit(0);
- /* 第一次fork的子进程部分 */
- /* 调用setsid,使得进程与旧会话过程相分离 */
- ret = setsid();
- if( 0 > ret )
- exit(1);
- /* 忽略信号SIGHUP */
- act.sa_handler = SIG_IGN;
- sigemptyset(&act.sa_mask);
- act.sa_flags = 0;
- sigaction(SIGHUP, &act, NULL);
- /* 第二次fork,使得进程不再是会话过程的领头进程,不能打开终端作伪自己的控制终端*/
- ret = fork();
- if(0 > ret)
- exit(1);
- else if( 0 != ret ) /* 父进程退出 */
- exit(0);
- /* 第二次fork的子进程部分 */
- /* 修改进程的当前目录 */
- chdir("/");
- /* 清除进程的文件掩码 */
- umask(0);
- /* 使得进程退出原来的进程组,不受原来进程组的干扰 */
- setpgrp();
- /* 关闭进程所有的文件描述符 */
- max_fd = sysconf(_SC_OPEN_MAX);
- for(i = 0; i < max_fd; i++)
- close(i);
- /* 打开空设备,让原来的输入输出移到该设备处 */
- open("/dev/null", O_RDWR);
- dup(1);
- dup(2);
- /* 打开系统日志 */
- openlog(pathname, LOG_PID, 0);
- return 0;
- }
- linux 守护进程(daemon)的创建方法
- Linux daemon守护进程的创建
- Linux 创建守护进程(daemon)
- 创建守护进程(Daemon)
- Linux Daemon(守护进程)
- Linux系统编程之创建守护进程(daemon)
- linux下创建守护进程(daemon process)
- linux下创建守护进程(daemon process)
- linux创建守护进程--Daemon函数
- 【Linux】守护进程(daemon)创建及详解
- 创建守护进程 daemon
- 守护进程daemon的创建和使用
- 守护进程daemon的创建和使用
- linux 守护进程 daemon
- linux 守护进程 daemon
- linux 守护进程 daemon
- Linux 守护进程daemon
- Linux 守护进程daemon
- jbuilder 2006添加mysql驱动
- oracle rman 首先要连接到数据库
- 新的开始
- 开始写博客!
- 数学运算表达式形式的验证码 C# Asp.Net
- linux 守护进程(daemon)的创建方法
- 简单的sync(tcp)攻击
- Java语言的GUI历史
- 在VC++下对文件属性的获取与更改
- 梅花雨日历控件英文版
- 简单的udp攻击
- C/C++基本知识
- 简单的嗅探
- eclipse中高亮显示相同的变量