ÀÖÓãµç¾º


  • ½ÌÓýÐÐÒµA¹ÉIPOµÚÒ»¹É£¨¹ÉƱ´úÂë 003032£©

    È«¹ú×Éѯ/ͶËßÈÈÏߣº400-618-4000

    ͨ¹ýfork()º¯Êý´´½¨½ø³Ì·½·¨½éÉÜ

    ¸üÐÂʱ¼ä:2021Äê07ÔÂ20ÈÕ14ʱ22·Ö À´Ô´:ÀÖÓãµç¾º ä¯ÀÀ´ÎÊý:

    ºÃ¿Ú±®ITÅàѵ

    ÔÚUnix/Linux²Ù×÷ϵͳÖУ¬Í¨¹ýPythonµÄosÄ£¿éÖзâ×°µÄfork()º¯Êý¿ÉÒÔÇáËɵش´½¨Ò»¸ö½ø³Ì¡£fork()º¯ÊýµÄÉùÃ÷ÈçÏ£º
    fork()
    ÒÔÉϺ¯Êýµ÷Óú󣬲Ù×÷ϵͳ»á½¨Á¢µ±Ç°Ï̵߳ĸ±±¾ÒÔʵÏÖ½ø³ÌµÄ´´½¨£¬´ËʱԭÓеĽø³Ì±»³ÆÎª¸¸½ø³Ì£¬¸´ÖƵĽø³Ì±»³ÆÎª×Ó½ø³Ì¡£ÐèҪעÒâµÄÊÇ£¬fork()º¯ÊýµÄÒ»´Îµ÷ÓòúÉúÁ½¸ö½á¹û£ºÈôµ±Ç°Ö´ÐÐÊǸ¸½ø³Ì£¬fork()º¯Êý·µ»Ø×Ó½ø³ÌID£»Èôµ±Ç°Ö´ÐеĽø³ÌÊÇ×Ó½ø³Ì£¬fork()º¯Êý·µ»Ø0¡£Èç¹ûfork()º¯Êýµ÷ÓÃʱ³öÏÖ´íÎ󣬽ø³Ì´´½¨Ê§°Ü£¬½«·µ»ØÒ»¸ö¸ºÖµ¡£

    ÏÂÃæÊ¹ÓÃfork()º¯Êý´´½¨Ò»¸ö×Ó½ø³Ì£¬Èø¸½ø³ÌºÍ×Ó½ø³Ì·Ö±ðÖ´Ðв»Í¬µÄÈÎÎñ£¬´úÂëÈçÏ£º

    import os
    import time
    value = os.fork()             # ´´½¨×Ó½ø³Ì
    if value == 0:                 # ×Ó½ø³ÌÖ´ÐÐif·ÖÖ§Óï¾ä
      print('---×Ó½ø³Ì---')
      time.sleep(2)
    else:                       # ¸¸½ø³ÌÖ´ÐÐelse·ÖÖ§Óï¾ä
      print('---¸¸½ø³Ì---')
      time.sleep(2)

    ÒÔÉϳÌÐòµ÷ÓÃfork()º¯Êý´´½¨×Ó½ø³Ì£¬Ê¹ÓñäÁ¿value¼Ç¼fork()µÄ·µ»ØÖµ£¬²¢¸ù¾Ýfork()µÄ·µ»Ø½á¹ûÇø·Ö¸¸½ø³ÌÓë×Ó½ø³Ì£¬ÎªÕâÁ½¸ö½ø³Ì·ÖÅɲ»Í¬µÄÈÎÎñ£ºµ±valueΪ0ʱ£¬ËµÃ÷µ±Ç°½ø³ÌÊÇ×Ó½ø³Ì£¬Ö´ÐÐif·ÖÖ§ÖеÄÓï¾ä£»µ±value²»Îª0ʱ£¬ËµÃ÷´Ëʱϵͳµ÷¶ÈµÄÊǸ¸½ø³Ì£¬Ö´ÐÐelse·ÖÖ§ÖеÄÓï¾ä¡£½ø³Ì´´½¨Óë³ÌÐòÖ´ÐеľßÌåÁ÷³ÌÈçͼ1Ëùʾ¡£

    fork()º¯Êý´´½¨½ø³Ì

    ͼ1 ʹÓÃfork()º¯Êý´´½¨½ø³Ì

    ³ÌÐòÖ´ÐÐÒ»´ÎµÄ½á¹ûÈçÏÂËùʾ£º

    ---¸¸½ø³Ì---
    ---×Ó½ø³Ì---

    ¹Û²ì´Ë´Î½á¹û¿ÉÒÔÍÆ²â£¬ÏµÍ³Ïȵ÷¶È¸¸½ø³Ì£¬ÔÙµ÷¶È×Ó½ø³Ì£¬µ«Êµ¼ÊÉÏ£¬×Ó½ø³ÌºÍ¸¸½ø³ÌÖ´ÐеÄ˳ÐòÊDz»È·¶¨µÄ£¬»áÊܵ½Ê±¼äƬ¡¢µ÷¶ÈÓÅÏȼ¶»òÆäËüÒòËØµÄÓ°Ïì¡£

    Èô³ÌÐòÖÐ˳Ðòµ÷ÓÃÁ½´Îfork()º¯Êý£¬ÄÇôµÚÒ»´Îµ÷ÓÃfork()ºóϵͳÖдæÔÚµÄÁ½¸ö½ø³Ì¶¼»áµ÷Óõڶþ¸öfork()º¯Êý´´½¨Ð½ø³Ì£¬Á½´Îfork()º¯Êýºó½ø³ÌµÄ±ä»¯Èçͼ2Ëùʾ¡£

    fork()º¯Êý´´½¨½ø³Ì

    ͼ2 ½ø³ÌµÄ±ä»¯

    ´Óͼ2ÖпÉÒÔ¿´³ö£¬“¸¸½ø³Ì1”ºÍ“×Ó½ø³Ì1”Ôٴθ´ÖƳöÁ½¸ö×Ó½ø³Ì£¬“¸¸½ø³Ì1”³ÉΪ“×Ó½ø³Ì2”µÄ¸¸½ø³Ì£¬“×Ó½ø³Ì1”³ÉΪ“×Ó½ø³Ì3”µÄ¸¸½ø³Ì£¬±ä³É“¸¸½ø³Ì2”¡£

    ÏÂÃæÊ¹ÓÃfork()º¯Êý´´½¨3¸ö×Ó½ø³Ì£¬´úÂëÈçÏ£º

    import os
    import time
    print('---µÚÒ»´Îfork()µ÷ÓÃ---')
    value = os.fork()      # ´´½¨×Ó½ø³Ì£¬´Ëʱ½ø³ÌµÄ×ÜÊýÁ¿Îª2
    if value == 0:          # ×Ó½ø³ÌÖ´ÐÐif·ÖÖ§Óï¾ä
        print('---½ø³Ì1---')
        time.sleep(2)
    else:                     # ¸¸½ø³ÌÖ´ÐÐelse·ÖÖ§Óï¾ä
        print('---½ø³Ì2---')
        time.sleep(2)
    print('---µÚ¶þ´Îfork()µ÷ÓÃ---')
    value = os.fork()       # ´´½¨×Ó½ø³Ì£¬´Ëʱ½ø³ÌµÄ×ÜÊýÁ¿Îª4
    if value == 0:           # ×Ó½ø³ÌÖ´ÐÐif·ÖÖ§Óï¾ä
        print('---½ø³Ì3---')
        time.sleep(2)
    else:                      # ¸¸½ø³ÌÖ´ÐÐelse·ÖÖ§Óï¾ä
        print('---½ø³Ì4---')
        time.sleep(2)

    ³ÌÐòÖ´ÐеĽá¹ûÈçÏ£º

    ---µÚÒ»´Îfork()µ÷ÓÃ---
    ---½ø³Ì2---
    ---½ø³Ì1---
    ---µÚ¶þ´Îfork()µ÷ÓÃ---
    ---½ø³Ì4---
    ---½ø³Ì4---
    ---½ø³Ì3---
    ---½ø³Ì3---

    ÓÉÖ´Ðнá¹û¿ÉÖª£¬³ÌÐòÔÚµÚÒ»´Îµ÷ÓÃfork()º¯Êýºó´´½¨ÁËÒ»¸ö×Ó½ø³Ì£¬´Ëʱ¹²Óи¸½ø³ÌºÍ×Ó½ø³ÌÖ´ÐÐÏÂÃæµÄ´úÂ룬·Ö±ðÊä³ö “---½ø³Ì2---”ºÍ“---½ø³Ì1---”£»³ÌÐòÔÚµÚ¶þ´Îµ÷ÓÃfork()º¯ÊýºóÓÖ´´½¨ÁËÁ½¸öеÄ×Ó½ø³Ì£¬´Ëʱ¹²ÓÐÁ½¸ö¸¸½ø³ÌºÍÁ½¸ö×Ó½ø³ÌÖ´ÐÐÏÂÃæµÄ´úÂ룬·Ö±ðÊä³öÁ½´Î“---½ø³Ì4---”ºÍ“---½ø³Ì3---”¡£


    »ñÈ¡µ±Ç°½ø³ÌµÄID

    ½ø³ÌIDÊǽø³ÌµÄΨһ±êʶ£¬ÎªÁ˱ãÓÚ¹ÜÀíϵͳÖеĽø³Ì£¬osÄ£¿éÌṩÁËos.getpid()º¯ÊýºÍos.getppid()º¯ÊýÀ´·Ö±ð»ñÈ¡µ±Ç°½ø³ÌidºÍµ±Ç°½ø³Ì¸¸½ø³ÌµÄid£¬Ê¾Àý´úÂëÈçÏ£º

    import os
    process = os.fork() # ´´½¨×Ó½ø³Ì
    if process == 0: 
        # »ñÈ¡¸¸½ø³ÌµÄID 
        print('ÎÒÊÇ×Ó½ø³Ì-%d£¬¸¸½ø³ÌÊÇ%d'%(os.getpid(), os.getppid()))  
    else:
        print('ÎÒÊǸ¸½ø³Ì-%d, ×Ó½ø³ÌÊÇ%d'%(os.getpid(), process)) # »ñÈ¡µ±Ç°Ï̵߳ÄID

    ³ÌÐòÔËÐеĽá¹ûÈçÏ£º

    ÎÒÊǸ¸½ø³Ì-2497, ×Ó½ø³ÌÊÇ2498
    ÎÒÊÇ×Ó½ø³Ì-2498£¬¸¸½ø³ÌÊÇ2497



    ²ÂÄãϲ»¶£º

    дÅÀ³æÊÇÓÃ¶à½ø³ÌºÃ?»¹ÊǶàÏ̺߳Ã?

    ʲôÊÇIPµØÖ·£¿Ê¹ÓÃIPµØÖ·ºÍ¶Ë¿ÚºÅÄÜÈ·¶¨Ö÷»úµÄ½ø³ÌÂð£¿

    ½ø³Ì¹ÜÀí¹¤¾ßSupervisor°²×°²¿Êð½Ì³Ì

    ÀÖÓãµç¾ºpython+´óÊý¾Ý¿ª·¢¸ßÊÖ°à

    0 ·ÖÏíµ½£º
    ºÍÎÒÃÇÔÚÏß½»Ì¸£¡
    ¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿