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()方法,来销毁僵尸进程

  

优质内容筛选与推荐>>
1、为什么说事件是特殊的委托
2、Struts2(四)Struts2配置文件的配置
3、求1+2+3+...+n的非常规方法
4、RabbitMQ入门-Routing直连模式
5、GNU Gengetopt 2.10 Usage(转)


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号