最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python守護(hù)進(jìn)程(daemon)代碼實(shí)例

 更新時(shí)間:2015年03月06日 10:13:05   投稿:junjie  
這篇文章主要介紹了Python守護(hù)進(jìn)程(daemon)代碼實(shí)例,本文直接給出實(shí)現(xiàn)代碼,代碼中包含詳細(xì)注釋,需要的朋友可以參考下
# -*-coding:utf-8-*-
import sys, os

'''將當(dāng)前進(jìn)程fork為一個(gè)守護(hù)進(jìn)程

  注意:如果你的守護(hù)進(jìn)程是由inetd啟動(dòng)的,不要這樣做!inetd完成了
  所有需要做的事情,包括重定向標(biāo)準(zhǔn)文件描述符,需要做的事情只有
  chdir() 和 umask()了
'''
def daemonize(stdin='/dev/null',stdout= '/dev/null', stderr= 'dev/null'):
  '''Fork當(dāng)前進(jìn)程為守護(hù)進(jìn)程,重定向標(biāo)準(zhǔn)文件描述符
    (默認(rèn)情況下定向到/dev/null)
  '''
  #Perform first fork.
  try:
    pid = os.fork()
    if pid > 0:
      sys.exit(0) #first parent out
  except OSError, e:
    sys.stderr.write("fork #1 failed: (%d) %s\n" %(e.errno, e.strerror))
    sys.exit(1)

  #從母體環(huán)境脫離
  os.chdir("/")
  os.umask(0)
  os.setsid()
  #執(zhí)行第二次fork
  try:
    pid = os.fork()
    if pid > 0:
      sys.exit(0) #second parent out
  except OSError, e:
    sys.stderr.write("fork #2 failed: (%d) %s]n" %(e.errno,e.strerror))
    sys.exit(1)

  #進(jìn)程已經(jīng)是守護(hù)進(jìn)程了,重定向標(biāo)準(zhǔn)文件描述符
  for f in sys.stdout, sys.stderr: f.flush()
  si = file(stdin, 'r')
  so = file(stdout,'a+')
  se = file(stderr,'a+',0)
  os.dup2(si.fileno(), sys.stdin.fileno())
  os.dup2(so.fileno(), sys.stdout.fileno())
  os.dup2(se.fileno(), sys.stderr.fileno())

def _example_main():
  '''示例函數(shù):每秒打印一個(gè)數(shù)字和時(shí)間戳'''
  import time
  sys.stdout.write('Daemon started with pid %d\n' % os.getpid())
  sys.stdout.write('Daemon stdout output\n')
  sys.stderr.write('Daemon stderr output\n')

  c = 0
  while True:
    sys.stdout.write('%d: %s\n' %(c, time.ctime()))
    sys.stdout.flush()
    c = c+1
    time.sleep(1)

if __name__ == "__main__":
  daemonize()
  _example_main()
'''
第一個(gè)fork是為了讓shell返回,同時(shí)讓你完成setsid(從你的控制終端移除,這樣就不會(huì)意外地收到信號(hào))。setsid使得這個(gè)進(jìn)程成為“會(huì)話領(lǐng)導(dǎo)(session leader)”,即如果這個(gè)進(jìn)程打開(kāi)任何終端,該終端就會(huì)成為此進(jìn)程的控制終端。我們不需要一個(gè)守護(hù)進(jìn)程有任何控制終端,所以我們又fork一次。在第二次fork之后,此進(jìn)程不再是一個(gè)“會(huì)話領(lǐng)導(dǎo)”,這樣它就能打開(kāi)任何文件(包括終端)且不會(huì)意外地再次獲得一個(gè)控制終端

另外說(shuō)明:
umask()函數(shù)為進(jìn)程設(shè)置文件模式創(chuàng)建屏蔽字,并返回以前的值
在shell命令行輸入:umask 就可知當(dāng)前文件模式創(chuàng)建屏蔽字
常見(jiàn)的幾種umask值是002,022和027,002阻止其他用戶寫(xiě)你的文件,022阻止同組成員和其他用戶寫(xiě)你的文件,027阻止同組成員寫(xiě)你的文件以及其他用戶讀寫(xiě)或執(zhí)行你的文件
rwx-rwx-rwx 代表是777 所有的人都具有權(quán)限讀寫(xiě)與執(zhí)行

chmod()改變文件的權(quán)限位
int dup(int filedes) 返回新文件描述符一定是當(dāng)前文件描述符中的最小數(shù)值
int dup2(int filedes, int filedes2);這兩個(gè)函數(shù)返回的新文件描述符與參數(shù)filedes共享同一個(gè)文件表項(xiàng)。
'''

相關(guān)文章

  • python實(shí)現(xiàn)的二叉樹(shù)算法和kmp算法實(shí)例

    python實(shí)現(xiàn)的二叉樹(shù)算法和kmp算法實(shí)例

    最近重溫?cái)?shù)據(jù)結(jié)構(gòu),又用python,所以就用python重新寫(xiě)了數(shù)據(jù)結(jié)構(gòu)的一些東西,以下是二叉樹(shù)的python寫(xiě)法
    2014-04-04
  • Python中GeoJson和bokeh-1的使用講解

    Python中GeoJson和bokeh-1的使用講解

    今天小編就為大家分享一篇關(guān)于Python中GeoJson和bokeh-1的使用講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • python高級(jí)特性簡(jiǎn)介

    python高級(jí)特性簡(jiǎn)介

    這篇文章主要介紹了python高級(jí)特性的相關(guān)內(nèi)容,其中包括切片,迭代,列表生成式,生成器,迭代器,感興趣的朋友可以了解下
    2020-08-08
  • 在Python中使用poplib模塊收取郵件的教程

    在Python中使用poplib模塊收取郵件的教程

    這篇文章主要介紹了在Python中使用poplib模塊收取郵件的教程,代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • 我用Python給班主任寫(xiě)了一個(gè)自動(dòng)閱卷腳本(附源碼)

    我用Python給班主任寫(xiě)了一個(gè)自動(dòng)閱卷腳本(附源碼)

    這篇文章主要介紹了如何用Python給寫(xiě)了一個(gè)自動(dòng)閱卷腳本,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • python 發(fā)送和接收ActiveMQ消息的實(shí)例

    python 發(fā)送和接收ActiveMQ消息的實(shí)例

    今天小編就為大家分享一篇python 發(fā)送和接收ActiveMQ消息的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • tensorflow與numpy的版本兼容性問(wèn)題的解決

    tensorflow與numpy的版本兼容性問(wèn)題的解決

    這篇文章主要介紹了tensorflow與numpy的版本兼容性問(wèn)題的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • python提取特定格式的數(shù)據(jù)的操作方法

    python提取特定格式的數(shù)據(jù)的操作方法

    這篇文章主要介紹了python提取特定格式的數(shù)據(jù),通過(guò)本腳本,我們學(xué)習(xí)了如何使用 Pandas 讀取和處理 Excel 數(shù)據(jù),如何使用 Tkinter 創(chuàng)建圖形用戶界面,以及如何處理文件對(duì)話框和文件操作,需要的朋友可以參考下
    2024-06-06
  • Python3常用內(nèi)置方法代碼實(shí)例

    Python3常用內(nèi)置方法代碼實(shí)例

    這篇文章主要介紹了Python3常用內(nèi)置方法代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • matplotlib 畫(huà)雙軸子圖無(wú)法顯示x軸的解決方法

    matplotlib 畫(huà)雙軸子圖無(wú)法顯示x軸的解決方法

    這篇文章主要介紹了matplotlib 畫(huà)雙軸子圖無(wú)法顯示x軸的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評(píng)論

芒康县| 昌黎县| 德阳市| 阳东县| 临沂市| 池州市| 河曲县| 五原县| 潜山县| 沿河| 揭阳市| 灵石县| 开阳县| 兴城市| 久治县| 依兰县| 大竹县| 库尔勒市| 青神县| 雷波县| 岳西县| 镇康县| 景洪市| 织金县| 万州区| 襄樊市| 巴东县| 乡城县| 广元市| 扎赉特旗| 射洪县| 马公市| 宣汉县| 大余县| 龙山县| 尼勒克县| 盐源县| 舞钢市| 房山区| 正阳县| 毕节市|