C语言编写daemon模式的后台运行程序
2017-11-07 00:00
1996 查看
C语言编写daemon模式的后台运行程序
init_daemon.c
test1.c
编译:
运行:
就可以看到这个程序以deamon形式在运行。
init_daemon.c
#include <unistd.h> #include <signal.h> #include <sys/param.h> #include <sys/types.h> #include <sys/stat.h> void init_daemon(void) { int pid; int i; /* 是父进程,结束父进程 */ if(pid=fork()) { exit(0); }else if(pid< 0) { exit(1); /* fork失败,退出 */ } /* 是第一子进程,后台继续执行 */ /* 第一子进程成为新的会话组长和进程组长 */ setsid(); /* 并与控制终端分离 */ if(pid=fork()) { exit(0); /* 是第一子进程,结束第一子进程 */ }else if(pid< 0) { exit(1); /* fork失败,退出 */ } /* 是第二子进程,继续 */ /* 第二子进程不再是会话组长 */ /* 关闭打开的文件描述符 */ for(i=0;i< NOFILE;++i) { close(i); } /* 改变工作目录到/tmp */ chdir("/tmp"); /* 重设文件创建掩模 */ umask(0); return; }
test1.c
#include <stdio.h> #include <time.h> void init_daemon(void); /* 守护进程初始化函数 */ main() { FILE *fp; time_t t; init_daemon(); /* 初始化为Daemon */ while(1) { /* 每隔一分钟向test.log报告运行状 */ sleep(60); /* 睡眠一分钟 */ if((fp=fopen("test.log","a")) >=0) { t=time(0); fprintf(fp,"Im here at %s/n",asctime(localtime(&t)) ); fclose(fp); } } }
编译:
gcc -o test1 test1.c init_deamon.c
运行:
# ./test1 # ps -ef |grep test1
就可以看到这个程序以deamon形式在运行。
相关文章推荐
- 编写一个C语言语句,要求输出这个程序需要运行的时间(用clock()做) 该怎么写?
- 在linux中,让程序进入后台运行的命令—>daemon程序
- 2015.12.02 vim编写程序运行的步骤 Xcode基本介绍(快捷键) C语言中的变量
- 在Android上运行C语言编写的可执行程序
- 让Java程序作为linux的Daemon后台运行
- 让Java程序作为linux的Daemon后台运行
- 如何在终端下以后台模式运行Linux程序
- MFC怎样编写后台运行的程序 (这个值得一看)
- 终端下以后台模式运行Linux程序的过程详解
- linux下运行自己编写的C语言程序提示bash:./*** 权限不够
- 让Java程序作为linux的Daemon后台运行 和 使用Java Service Wrapper将java程序作为linux服务并且开机自动启动
- MFC怎样编写后台运行的程序 (这个值得一看) 续。。。
- 使用Daemon将java程序运行为后台service
- 在Linux下用C语言写一个小程序实现一个进度条编写Makefile来进行运行
- MFC怎样编写后台运行的程序
- 命令行解析与程序开启后台模式运行
- [PHP学习教程 - 系统]002.模拟守护进程(Daemon)-程序永远在后台运行
- Go程序在Linux作为后台应用daemon运行
- daemon 进程为什么要fork两次,与后台运行程序区别?
- 在Android上运行C语言编写的可执行程序