此代码应该尝试并启动服务器进程并返回。 如果端口被占用,则应该说“无法绑定到该端口”并返回。如果服务器启动,它应该打印“绑定到端口51231”并返回。但它不会返回。叉和退出在Python
import socket
from multiprocessing import Process
def serverMainLoop(s,t):
s.listen(5)
while 1:
pass # server goes here
host = ''
port = 51231
so = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
so.bind((host,port))
print "Bound to port %i"%port
serverProcess = Process(target=serverMainloop, args=(so,60))
serverProcess.start()
sys.exit()
except socket.error, (value,message):
if value==98:
print "couldn't bind to that port"
sys.exit()
是否有一些开关可以导致多处理让我这么做?
代码工作与我同你所描述的: 第一次运行挂起,如果我跑了两次,第二个实例显示“无法绑定到该端口”,然后退出。那么,你的问题是什么? – theomega 2010-07-28 18:12:58
我不希望第一个挂起,我希望它返回并打印它绑定的端口,而不会终止正在循环的子进程。 – Nathan 2010-07-28 18:20:27