Linux学习之系统编程篇:编写一个守护进程
生活随笔
收集整理的這篇文章主要介紹了
Linux学习之系统编程篇:编写一个守护进程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
需求:寫一個守護進程,每隔 2s 獲取一次系統時間,將這個時間寫入到磁盤文件
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <signal.h> #include <sys/time.h> #include <time.h> #include <fcntl.h> #include <string.h> void func(int num) // 回調函數 {// 將當前時間寫入磁盤time_t curtime; //傳出參數time(&curtime); //獲取當前時間curtimechar *pt = ctime(&curtime); //格式化時間int fd = open("/home/ubuntu/1.txt", O_CREAT | O_WRONLY | O_APPEND, 0664);write(fd, pt, strlen(pt)+1);close(fd); } int main() {pid_t pid = fork();if(pid > 0){exit(1); // 1.創建子進程,父進程退出}else if(pid == 0){setsid(); // 2.子進程創建會話chdir(“/home/ubuntu”); // 3.改變工作目錄umask(0); // 4.改變掩碼close(0); // 5.關閉文件描述符 close(1); close(2); // 6.執行核心操作 // 6.1 信號捕捉 注意:先捕捉,后發信號struct sigaction act;act.sa_flags = 0;act.sa_handler = func;sigemptyset(&act.sa_mask);sigaction(SIGALRM, &act, NULL);// 6.2 設置定時器,發送待捕捉的信號struct itimerval val = {{2,0},{1,0}};setitimer(ITIMER_REAL, &val, NULL); while(1); // 讓守護進程一直存活}return 0; }總結
以上是生活随笔為你收集整理的Linux学习之系统编程篇:编写一个守护进程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux学习之系统编程篇:守护进程(精
- 下一篇: Linux学习之系统编程篇:对线程的基本