进程的守护进程的用法
2016-06-19 08:46
323 查看
编写守护进程的步骤:
1、创建子进程,父进程退出。
2、在子进程中创建新会话。
setsid();
3、改变当前目录为根目录。
chdir("/");
4、重设文件权限掩码。
umask(0);
5、关闭文件描述符。
for(i = 0; i < getdtablesize(); i++) /* 第五步 */
{
close(i);
}
代码分析;
1、创建子进程,父进程退出。
2、在子进程中创建新会话。
setsid();
3、改变当前目录为根目录。
chdir("/");
4、重设文件权限掩码。
umask(0);
5、关闭文件描述符。
for(i = 0; i < getdtablesize(); i++) /* 第五步 */
{
close(i);
}
代码分析;
/* daemon.c创建守护进程实例 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <sys/types.h> #include <unistd.h> #include <sys/wait.h> int main() { pid_t pid; int i, fd; char* buf = "This is a Daemon\n"; pid = fork(); /* 第一步 */ if(pid < 0) { printf("Error fork\n"); exit(1); } else if(pid > 0) { exit(0); /* 父进程退出 */ } setsid(); /* 第二步 */ chdir("/"); /* 第三步 */ umask(0); /* 第四步 */ for(i = 0; i < getdtablesize(); i++) /* 第五步 */ { close(i); } /* 这时创建完守护进程,以下开始正式进入守护进程工作 */ while(1) { if((fd = open("/tmp/daemon.log", O_CREAT | O_WRONLY | O_APPEND, 0600)) < 0) { printf("Open file error\n"); exit(1); } write(fd, buf, strlen(buf) + 1); close(fd); sleep(10); } return 0; }
相关文章推荐
- 放假寂寞,敲敲代码,写了下几个常见的排序算法
- 【LeetCode】sum-root-to-leaf-numbers
- iOS网络访问之使用AFNetworking
- UUID(通用唯一标识符)
- hdu 4886(hash + dfs)
- 模仿腾讯实现内核进程的调试端口DebugPort 清零
- 2016-06-19 exshop第5天
- 修改Servlet的默认模板
- iOS 加密
- css position属性
- SPLUNK之Docker配置
- PAT乙级练习题B1009. 说反话
- Oracle数据库,生成自增主键
- python中的增量赋值 **=
- ASP。net开发基础(一)
- 第七次作业
- Windows存储管理之磁盘结构详解
- 【leetcode】350. Intersection of Two Arrays II
- Windows存储管理之磁盘结构详解
- php不是世界上最好的语言, Ruby才是