"""
基於fork的多程序網路併發
"""# 服務端
from socket import
*import os,sys
import signal
defhandle
(c):
print
("客戶端:"
,c.getpeername())
while
true
: data = c.recv(
1024)if
not data:
break
print
(data.decode())
c.send(b'ok'
)# 建立監聽套接字
host =
"0.0.0.0"
port =
8888
addr =
(host,port)
# 建立套接字
s = socket(
)# tcp套接字
s.setsockopt(sol_socket,so_reuseaddr,1)
s.bind(addr)
s.listen(3)
# 殭屍程序處理
signal.signal(signal.sigchld,signal.sig_ign)
print
("listen the port 8888...."
)# 迴圈等待客戶端連線
while
true
:try
: c,addr = s.accept(
)except keyboardinterrupt:
sys.exit(
"伺服器退出"
)except exception as e :
print
(e)continue
# 建立子程序處理客戶端請求
pid = os.fork(
)if pid ==0:
s.close(
)# 子程序不需要s
handle(c)
# 具體處理客戶端請求
os._exit(0)
# 父程序只用來處理客戶端的連線
else
: c.close(
)# 父程序不需要c
程序的基本操作,fork(),建立多程序。
fork用於新建乙個子程序,簡單的例子 include 提供open函式 include 該標頭檔案提供系統呼叫的標誌 include 該標頭檔案提供系統狀態資訊和相關函式 include 該標頭檔案提供程序i o操作的相關函式 include 標準函式庫 include 檔案操作相關函式庫 inc...
gdb 子程序 多程序 fork 除錯
標 題 faq 請問如何用gdb除錯子程序 發信站 bbs 水木清華站 mon may 19 18 17 02 2003 轉信 作個faq,在常見的x86平台上如何gdb除錯fork或者exec出來的子程序 1.在fork語句上設定斷點,修改fork返回的值。這種做法並沒有真正去 觸動已經存在的子程...
網路程式設計基礎 併發程式設計 多程序
python中的多執行緒無法利用多核優勢,如果想要充分地使用多核cpu的資源 os.cpu count 檢視 在python中大部分情況需要使用多程序。python提供了multiprocessing multiprocessing模組用來開啟子程序,並在子程序中執行我們定製的任務 比如函式 該模組...