守护进程
来源:互联网 发布:max384灯控台编程教程 编辑:程序博客网 时间:2024/04/20 04:55
/*如果你在 DOS 时代编写过程序,那么你也许知道在 DOS 下为了编写一个常驻内存的
程序我们要编写多少代码了.相反如果在 Linux 下编写一个"常驻内存"的程序却是很容易的.
我们只要几行代码就可以做到. 实际上由于 Linux 是多任务操作系统,我们就是不编写代码
也可以把一个程序放到后台去执行的.我们只要在命令后面加上&符号 SHELL 就会把我们的
程序放到后台去运行的. 这里我们"开发"一个后台检查邮件的程序.这个程序每个一个指
定的时间回去检查我们的邮箱,如果发现我们有邮件了,会不断的报警(通过机箱上的小喇
叭来发出声音). 后面有这个函数的加强版本加强版本
后台进程的创建思想: 首先父进程创建一个子进程.然后子进程杀死父进程(是不是很无
情?). 信号处理所有的工作由子进程来处理
程序功能,检测邮件,并提示新邮件,邮件路径:/var/spool/mail/root*/
1 #include <unistd.h>
2 #include <sys/types.h>
3 #include <sys/stat.h>
4 #include <stdio.h>
5 #include <errno.h>
6 #include <fcntl.h>
7 #include <signal.h>
8 #include <stdlib.h>
9 #define MAIL "/var/spool/mail/root"/*linux default email address is /var/spool/mail/userName*/
10 #define SLEEP_TIME 1
11 main(void)
12 {
13 pid_t child;
14 if((child=fork())==-1)
15 {
16 printf("Fork Error: %s/n",strerror(errno));
17 exit(1);
18 }
19 else if (child >= 0)
20 while(1);
21 if(kill(getppid(),SIGTERM)==-1)/*杀死父进程,否则不能常驻内存,*/
22 {
23 printf("Kill Parent Error: %s/n",strerror(errno));
24 exit(1);
25 }
26 {
27 int mailfd;
28 while(1)
29 {
30 if((mailfd=open(MAIL,O_RDONLY))!=-1)
31 {
32 fprintf(stderr,"%s","/007");
33 close(mailfd);
34 }
35 sleep(SLEEP_TIME);
36 }
37 }
38 }
- 守护进程守护自身
- 守护线程、守护进程
- 守护进程
- 守护进程
- 守护进程
- 守护进程
- 进程守护
- 守护进程
- 守护进程
- 守护进程
- 守护进程
- 守护进程
- 守护进程
- 守护进程
- 守护进程
- 守护进程
- 守护进程
- 守护进程
- 我该把Widget放在哪?
- 我的博客开通了
- 在成长路上迷茫!!
- 在对话框(CDialog)中使用分割窗(CSplitterWnd)
- Korn Shell Notes(IV)
- 守护进程
- 摘录论坛有用东西
- C/C++单词倒转/反转
- malloc,new,VirtualAlloc,HeapAlloc性能(速度)比较
- 新人新位--浅谈简历被筛
- Gartner和它的生存法则
- C/C++字符串查找
- Huffman编码示例程序
- 五子棋(一)