日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux / 守护进程

發布時間:2024/10/14 linux 71 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux / 守护进程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
@time 2019-07-14 @author Ruo_Xiao

一、概念

守護進程是長期運行的不與終端關聯的后臺運行的進程。

二、栗子

#include <unistd.h> #include <fcntl.h> #include <stdlib.h> #include <sys/stat.h>// 創建守護進程。 int MyDaemon() {// 創建子進程。switch (fork()){// 創建線程錯誤。case -1:return -1;// 創建子進程成功,直接往下運行。case 0:break;// 父進程直接退出。default:exit(0);}// 運行至此,子進程變成孤兒進程,由 init(systemd) 收養。// 子進程創建新會話,并成為進程組組長和會話領頭進程,與終端脫離關聯。if (setsid() == -1)return -1;// 設置為 0,不讓其限制文件權限,以免引起混亂。umask(0);// 以讀寫的方式打開黑洞設備。int fd = open("/dev/null", O_RDWR);if (fd == -1)return -1;if (dup2(fd, STDIN_FILENO) == -1)return -1;if (dup2(fd, STDOUT_FILENO) == -1)return -1;if (dup2(fd, STDERR_FILENO) == -1)return -1;close(fd);return 0; }int main() {if (MyDaemon() != 0)return 1;while (true)sleep(1);return 0; }

三、其他

1、cmd 指令?

ps -axj

顯示的守護進程的名字中,帶“[]”的是內核守護進程,不帶的則是用戶級守護進程

2、守護進程不會收到來自內核的 SIGHUPSIGINITSIGWINCH 信號,如果守護進程收到該信號,說明該信號是來自其他進程的。程序員可以將這三個信號用于他用。

? ? ? ? 在 nginx 中, 配置文件被修改之后,nginx? reload 時,就是用 SIGHUP 信號來通知 nginx 來實現上述操作的。

3、拓展

  • SIGHUP:終端關閉信號。
  • SIGINIT:Ctrl + C 。
  • SIGWINCH:終端大小改變信號。

?

(SAW:Game Over!)

總結

以上是生活随笔為你收集整理的Linux / 守护进程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。