国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python守護進程(daemon)代碼實例

Python守護進程(daemon)代碼實例

2019-11-23 17:41junjie Python

這篇文章主要介紹了Python守護進程(daemon)代碼實例,本文直接給出實現代碼,代碼中包含詳細注釋,需要的朋友可以參考下

  1. # -*-coding:utf-8-*- 
  2. import sys, os 
  3.   
  4. '''將當前進程fork為一個守護進程 
  5.   
  6.   注意:如果你的守護進程是由inetd啟動的,不要這樣做!inetd完成了 
  7.   所有需要做的事情,包括重定向標準文件描述符,需要做的事情只有 
  8.   chdir() 和 umask()了 
  9. ''
  10. def daemonize(stdin='/dev/null',stdout= '/dev/null', stderr= 'dev/null'): 
  11.   '''Fork當前進程為守護進程,重定向標準文件描述符 
  12.     (默認情況下定向到/dev/null) 
  13.   ''
  14.   #Perform first fork. 
  15.   try
  16.     pid = os.fork() 
  17.     if pid > 0: 
  18.       sys.exit(0) #first parent out 
  19.   except OSError, e: 
  20.     sys.stderr.write("fork #1 failed: (%d) %s\n" %(e.errno, e.strerror)) 
  21.     sys.exit(1) 
  22.   
  23.   #從母體環境脫離 
  24.   os.chdir("/"
  25.   os.umask(0) 
  26.   os.setsid() 
  27.   #執行第二次fork 
  28.   try
  29.     pid = os.fork() 
  30.     if pid > 0: 
  31.       sys.exit(0) #second parent out 
  32.   except OSError, e: 
  33.     sys.stderr.write("fork #2 failed: (%d) %s]n" %(e.errno,e.strerror)) 
  34.     sys.exit(1) 
  35.   
  36.   #進程已經是守護進程了,重定向標準文件描述符 
  37.   for f in sys.stdout, sys.stderr: f.flush() 
  38.   si = file(stdin, 'r'
  39.   so = file(stdout,'a+'
  40.   se = file(stderr,'a+',0) 
  41.   os.dup2(si.fileno(), sys.stdin.fileno()) 
  42.   os.dup2(so.fileno(), sys.stdout.fileno()) 
  43.   os.dup2(se.fileno(), sys.stderr.fileno()) 
  44.   
  45. def _example_main(): 
  46.   '''示例函數:每秒打印一個數字和時間戳''' 
  47.   import time 
  48.   sys.stdout.write('Daemon started with pid %d\n' % os.getpid()) 
  49.   sys.stdout.write('Daemon stdout output\n'
  50.   sys.stderr.write('Daemon stderr output\n'
  51.   
  52.   c = 0 
  53.   while True: 
  54.     sys.stdout.write('%d: %s\n' %(c, time.ctime())) 
  55.     sys.stdout.flush() 
  56.     c = c+1 
  57.     time.sleep(1) 
  58.   
  59. if __name__ == "__main__"
  60.   daemonize() 
  61.   _example_main() 
  62. ''
  63. 第一個fork是為了讓shell返回,同時讓你完成setsid(從你的控制終端移除,這樣就不會意外地收到信號)。setsid使得這個進程成為“會話領導(session leader)”,即如果這個進程打開任何終端,該終端就會成為此進程的控制終端。我們不需要一個守護進程有任何控制終端,所以我們又fork一次。在第二次fork之后,此進程不再是一個“會話領導”,這樣它就能打開任何文件(包括終端)且不會意外地再次獲得一個控制終端 
  64.   
  65. 另外說明: 
  66. umask()函數為進程設置文件模式創建屏蔽字,并返回以前的值 
  67. 在shell命令行輸入:umask 就可知當前文件模式創建屏蔽字 
  68. 常見的幾種umask值是002,022和027,002阻止其他用戶寫你的文件,022阻止同組成員和其他用戶寫你的文件,027阻止同組成員寫你的文件以及其他用戶讀寫或執行你的文件 
  69. rwx-rwx-rwx 代表是777 所有的人都具有權限讀寫與執行 
  70.   
  71. chmod()改變文件的權限位 
  72. int dup(int filedes) 返回新文件描述符一定是當前文件描述符中的最小數值 
  73. int dup2(int filedes, int filedes2);這兩個函數返回的新文件描述符與參數filedes共享同一個文件表項。 
  74. ''

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人精品视频免费 | 成年人黄色免费网站 | 日韩一区欧美 | 免费看一区二区三区 | 天堂av一区二区 | 亚洲综合激情网 | 亚洲国产成人精品女人久久 | 久久夜色精品国产 | 特黄特黄aaaa级毛片免费看 | 综合精品久久久 | 国产精品亚洲一区二区三区在线 | av一二三区 | 正在播放国产精品 | 久草电影网| 一级片网址| 搡女人真爽免费午夜网站 | 成人在线免费观看小视频 | av网站入口 | 天堂视频在线 | 久久久精品播放 | 一二三区av| 国产亚洲一区二区三区 | av网站免费 | 欧美日韩在线一区 | 欧美黄色精品 | 日韩精品视频一区二区三区 | 高清国产午夜精品久久久久久 | 爱爱av网站| 午夜成人免费视频 | 午夜精品久久久 | 亚洲第一色 | 欧美一级久久 | 成人精品动漫一区二区三区 | 久久久久久成人 | 欧美视频第一页 | 欧美日韩一区二区三区在线观看 | 在线免费观看中文字幕 | 精品在线一区二区 | 成人小视频在线看 | 亚洲成人高清 | 一级黄色免费网站 |