基於fork的多程序網路併發

2021-09-26 01:47:55 字數 1195 閱讀 2208

"""

基於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模組用來開啟子程序,並在子程序中執行我們定製的任務 比如函式 該模組...