通過Python指令碼理解系統處理序間通訊

來源:互聯網
上載者:User

from socket import *  #匯入socket包中的所有內容from time import ctime #匯入time包,同時在本地可使用ctime進行調用import os,sys #匯入os,sys包HOST='localhost'#定義主機PORT=21567#定義連接埠BUFSIZ=1024 #定義緩衝區ADDR=(HOST,PORT) #定義元組
tcpSerSock=socket(AF_INET,SOCK_STREAM)  #產生sockettcpSerSock.bind(ADDR) #將地址及連接埠元組與socket綁定tcpSerSock.listen(5) #監聽使用者請求
r,w=os.pipe() #定義管道,處理序間通訊就靠他了!
while True: #定義無限迴圈    print "waiting ...."  #列印等待使用者輸入時的waiting    try:#檢測可能的異常    tcpCliSock,addr=tcpSerSock.accept() #處理使用者請求    os.write(w,"f") #在管道一側寫入字元“f”    except:#處理異常    sys.exit(0)#如果發生異常將直接退出    if os.fork(): #在父進程中的處理    pass #跳過處理    else:#在子進程中的處理        print 'con from :',addr #列印用戶端資訊        while True: #定義無限迴圈            data=tcpCliSock.recv(BUFSIZ) #從用戶端接收1024大小的資料    os.write(w,data) #將資料寫入到道道中            if not data: #如果用戶端沒有任何輸入,即直接斷行符號或Ctrl+D        tcpSerSock.close()#關閉用戶端連結                break#跳出無限迴圈            tcpCliSock.send('[%s] %s' %(ctime(),os.read(r,1024)))#否則回顯使用者資訊並附加目前時間!
tcpSerSock.close() #這句話依然不會被執行。
通過這兩個指令碼大家能否對Apache的profork模式有一個更清晰的認識?

本文出自 “林肯” 部落格,請務必保留此出處http://president.blog.51cto.com/4990508/1079464

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.