1.
#include <stdio.h>
2 #include <string.h>
3 #include <stdlib.h>
4 #include <head.h>
5 int main(int argc, const char *argv[])
6 {
7 if(fork() == 0)
8 {
9 pid_t a = setsid();
10 if(a < 0)
11 {
12 ERR_MSG("setsid");
13 return -1;
14 }
15 int b = chdir("/");
16 if(-1 == b)
17 {
18 ERR_MSG("chdir");
19 return -1;
20 }
21 umask(0);
22 for(int i=0 ; i<getdtablesize() ; i++)
23 {
24 close(i);
25 }
26 while(1)
27 sleep(1);
28 }
29 return 0;
30 }
2.
1 #include <stdio.h>
2 #include <string.h>
3 #include <stdlib.h>
4 #include <head.h>
5 void sj(pid_t pid)
6
7 {
8 struct tm *info;
9 while(1)
10 {
11 pid_t d = waitpid(pid,NULL,WNOHANG);
12 if(d > 0)
13 {break;}
14 time_t a;
15 a=time(NULL);
16 info=localtime(&a);
17 printf("%d-%02d-%02d %02d:%02d:%02d 星期%d\r",\
18 info->tm_year+1900,info->tm_mon+1,info->tm_mday,\
19 info->tm_hour,info->tm_min,info->tm_sec,\
20 info->tm_wday);
21 fflush(stdout);
22 sleep(1);
23 }
24 }
25 int main(int argc, const char *argv[])
26 {
27 pid_t pid = fork();
28 if(pid > 0)
29 {
30 sj(pid);
31 }
32 else if(0 == pid)
33 {
34 while(1)
35 {
36 char a[10]="";
37 scanf("%s",a);
38 int c = strcmp(a,"quit");
39 if(c == 0)
40 {
41 exit(1);
42 }
43 }
44 }
45 else
46 {
47 ERR_MSG("fork");
48 return -1;
49 }
50 return 0;
51 }
3.xmind