python fork_python fork 用法

import os

import sys

ips = ( "192.168.45.%s" % i for i in range(1,255))

for ip in ips:

pid = os.fork()

if pid == 0:

result = os.system("ping -c2 %s" % ip )

if result == 0 :

print "%s:up" % ip

else:

print "%s:down" % ip

sys.exit()

上面的fork方法,容易产生僵尸进程。

#!/usr/bin/env python

import os

import sys

import socket

import time

host = ''

port = 12345

addr=(host,port)

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)

s.bind(addr)

s.listen(5)

while True:

try:

while True:

result =os.waitpid(-1,os.WNOHANG)

if result[0] == 0:

break

except OSError:

pass

cli, caddr = s.accept()

pid = os.fork()

if pid:

cli.close()

else:

s.close()

while True:

data = cli.recv(4096)

if not data.strip():

break

cli.send("[%s] %s" % (time.ctime(),data))

cli.close()

sys.exit()

s.close()

上面的代码,通过 os.waitpid()方法,来销毁僵尸进程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值