#include <stdio.h> #include <signal.h> #include <ctype.h> #include <fcntl.h> int g_count; void Exit() { printf("I will exit, press any key to continue...(g_count = %d)/n", g_count); exit(0); } int main(int argc, char* argv[]) { struct sigaction almact; pid_t pid; // 创建守护进程,让程序在后台运行 // fork,终止父进程 if (pid = fork()) exit(0); // 第一子进程 setsid(); signal(SIGHUP, SIG_IGN); // fork, 终止第一子进程 if (pid = fork()) exit(0); // 清除文件掩码 umask(0); signal(SIGTERM, Exit); // kill杀掉进程时候程序默认执行函数Exit while (1) { sleep(1); g_count ++; } }