- /*
- * 守户进程在系统启动时启动,系统关闭时终止
- * 守户进程的创建方法
- * 1.将子进程放入后台。终止父进程
- * 2.在子进程中创建新会话。setsid()
- * 3.关闭打开的文件描述符
- * 4.改变工作目录
- * 5.重设文件权限掩码
- * 6.处理SIGCHLD信号signal(SIGCHLD, SIG_IGN)
- * Lzy 2011-6-14
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <signal.h>
- /*
- * 创建守护进程,向某个文件周期性的写指定字符
- */
- int main(void)
- {
- int i;
- pid_t pid;
- FILE *fp;
-
- pid = fork(); //创建新进程
- if(pid > 0)
- {
- exit(0); //结束父进程
- }
- else if(pid == 0)
- {
- setsid(); //创建新会话
- for(i = 0; i < 1024; i++)
- close(i); //关闭打开的文件描述符
-
- chdir("/"); //改变工作目录
- umask(0); //重设文件权限掩码
- signal(SIGCHLD, SIG_IGN);//处理SIGCHLD信号
-
- while(1)
- {
- fp = fopen("/work/text", "a"); //打开文件
- fputs("this is a Dameon.\n", fp); //写入信息
- sleep(1); //睡眠一秒
- fclose(fp);
- }
- }
- return 0;
- }
- /*
- * 守户进程在系统启动时启动,系统关闭时终止
- * 守户进程的输出
- * syslog(int priority, char *format)
- * Lzy 2011-6-14
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <signal.h>
- #include <syslog.h>
- #include <time.h>
- /*
- * 创建守护进程,向某个文件周期性的写指定字符
- */
- int main(void)
- {
- int i;
- pid_t pid;
- time_t now;
-
- pid = fork(); //创建新进程
- if(pid > 0)
- {
- exit(0); //结束父进程
- }
- else if(pid == 0)
- {
- setsid(); //创建新会话
- for(i = 0; i < 1024; i++)
- close(i); //关闭打开的文件描述符
-
- chdir("/"); //改变工作目录
- umask(0); //重设文件权限掩码
- signal(SIGCHLD, SIG_IGN);//处理SIGCHLD信号
- syslog(LOG_USER | LOG_INFO, "Daemon test"); //写入至/var/log/messages文件中
-
- while(1)
- {
- time(&now);
- syslog(LOG_USER | LOG_INFO, "Current time:\t%s\n",ctime(&now));
- sleep(1); //睡眠一秒
-
- }
- }
- return 0;
- }
用tail /var/log/messages 查看文件信息
阅读(2035) | 评论(0) | 转发(3) |