• fork()函数


    定义

    是UNIX中的分叉函数,将运行着的程序分成两个完全一样的进程。

    fork() 有返回值:

    • 0: 返回到新创建的子进程
    • 负值:创建子进程失败
    • 正数: 返回父进程或调用者

    返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1

    示例

    import os
    import time
    
    print("Before fork, pid:%s, ppid:%s" % (os.getpid(), os.getppid()))
    
    pid = os.fork()
    
    if pid == 0:
        print("I'm Child process, pid:%s, ppid:%s" % (os.getpid(), os.getppid()))
        time.sleep(5)
    else:
        print("I'm Parent process, pid:%s, ppid:%s" % (os.getpid(), os.getppid()))
        time.sleep(5)
    
    print("After fork, pid:%s, ppid:%s" % (os.getpid(), os.getppid()))

    输出

    I'm Parent process, pid:79611, ppid:9103
    I'm Child process, pid:79612, ppid:79611
    After fork, pid:79612, ppid:79611
    After fork, pid:79611, ppid:9103

    当父进程终结时,子进程也会跟随消亡,如

    import os
    import time
    
    print("Before fork, pid:%s, ppid:%s" % (os.getpid(), os.getppid()))
    
    pid = os.fork()
    
    if pid == 0:
        print("I'm Child process, pid:%s, ppid:%s" % (os.getpid(), os.getppid()))
        time.sleep(15)
    else:
        print("I'm Parent process, pid:%s, ppid:%s" % (os.getpid(), os.getppid()))
        time.sleep(5)
    
    print("After fork, pid:%s, ppid:%s" % (os.getpid(), os.getppid()))

    返回值

    I'm Parent process, pid:80682, ppid:9103
    I'm Child process, pid:80683, ppid:80682
    After fork, pid:80682, ppid:9103
  • 相关阅读:
    Spring Boot邮件功能
    jenkins自动部署
    spring boot定时任务解析
    类的加载classload和类对象的生成
    排序算法
    Robbin负载均衡
    ActiveMQ消息中间件
    hystrix熔断器
    css3整理--calc()
    css3整理--media
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/16176674.html
Copyright © 2020-2023  润新知