通过Python脚本理解系统进程间通信
生活随笔
收集整理的這篇文章主要介紹了
通过Python脚本理解系统进程间通信
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
from socket import * ?#導入socket包中的所有內(nèi)容from time import ctime #導入time包,同時在本地可使用ctime進行調(diào)用import os,sys #導入os,sys包HOST='localhost' #定義主機PORT=21567 #定義端口BUFSIZ=1024 #定義緩沖區(qū)ADDR=(HOST,PORT) #定義元組
tcpSerSock=socket(AF_INET,SOCK_STREAM) ?#生成sockettcpSerSock.bind(ADDR) #將地址及端口元組與socket綁定tcpSerSock.listen(5) #監(jiān)聽用戶請求
r,w=os.pipe() ?#定義管道,進程間通信就靠他了!
while True: #定義無限循環(huán)print "waiting ...." ?#打印等待用戶輸入時的waitingtry: #檢測可能的異常 tcpCliSock,addr=tcpSerSock.accept() #處理用戶請求 os.write(w,"f") #在管道一側(cè)寫入字符“f”except: #處理異常 sys.exit(0) #如果發(fā)生異常將直接退出if os.fork(): ?#在父進程中的處理 pass #跳過處理else: #在子進程中的處理print 'con from :',addr #打印客戶端信息while True: #定義無限循環(huán)data=tcpCliSock.recv(BUFSIZ) #從客戶端接收1024大小的數(shù)據(jù) ? ?os.write(w,data) #將數(shù)據(jù)寫入到道道中if not data: #如果客戶端沒有任何輸入,即直接回車或Ctrl+D tcpSerSock.close() #關(guān)閉客戶端鏈接break #跳出無限循環(huán)tcpCliSock.send('[%s] %s' %(ctime(),os.read(r,1024)))#否則回顯用戶信息并附加當前時間!
tcpSerSock.close() #這句話依然不會被執(zhí)行。
通過這兩個腳本大家能否對Apache的profork模式有一個更清晰的認識?
tcpSerSock=socket(AF_INET,SOCK_STREAM) ?#生成sockettcpSerSock.bind(ADDR) #將地址及端口元組與socket綁定tcpSerSock.listen(5) #監(jiān)聽用戶請求
r,w=os.pipe() ?#定義管道,進程間通信就靠他了!
while True: #定義無限循環(huán)print "waiting ...." ?#打印等待用戶輸入時的waitingtry: #檢測可能的異常 tcpCliSock,addr=tcpSerSock.accept() #處理用戶請求 os.write(w,"f") #在管道一側(cè)寫入字符“f”except: #處理異常 sys.exit(0) #如果發(fā)生異常將直接退出if os.fork(): ?#在父進程中的處理 pass #跳過處理else: #在子進程中的處理print 'con from :',addr #打印客戶端信息while True: #定義無限循環(huán)data=tcpCliSock.recv(BUFSIZ) #從客戶端接收1024大小的數(shù)據(jù) ? ?os.write(w,data) #將數(shù)據(jù)寫入到道道中if not data: #如果客戶端沒有任何輸入,即直接回車或Ctrl+D tcpSerSock.close() #關(guān)閉客戶端鏈接break #跳出無限循環(huán)tcpCliSock.send('[%s] %s' %(ctime(),os.read(r,1024)))#否則回顯用戶信息并附加當前時間!
tcpSerSock.close() #這句話依然不會被執(zhí)行。
通過這兩個腳本大家能否對Apache的profork模式有一個更清晰的認識?
總結(jié)
以上是生活随笔為你收集整理的通过Python脚本理解系统进程间通信的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android Drawable绘图学习
- 下一篇: Windows Phone 7 自适应键