zoukankan      html  css  js  c++  java
  • Linux fork()返回值

    linux fork()返回值

    fork() 是Unix系统创建子进程的唯一方法,其他包或模块的底层都调fork。fork作用是复制克隆一个新进程(子进程),继续同时向下执行。

    特点:fork被调用一次,返回两次,一次在父进程中返回子进程PID,一次在子进程中返回0。fork失败返回负数,发生在PID个数达上限或内存不足时。

    # Python示例
    import os
    
    
    print("当前进程PID为:", os.getppid())
    # 此时仅有一个进程
    pid = os.fork()
    
    # 此时已经有两个进程在同时运行
    if pid < 0:
        print("fork失败")
    elif pid:
        print(f"我是父进程,我的PID是:{os.getppid()},fork给我返回的子进程PID是:{pid}")
    else:
        print(f"我是子进程,我的PID是:{os.getpid()},fork给我返回的PID是:{pid}")
    
    
    # 当前进程PID为: 20925
    # 我是父进程,我的PID是:20925,fork给我返回的子进程PID是:6707
    # 我是子进程,我的PID是:6707,fork给我返回的PID是:0
    

    为什么fork会返回两次?

    由于在复制时复制了父进程的堆栈段,所以两个进程都停留在fork函数中,等待返回。因此fork函数会返回两次,一次是在父进程中返回,另一次是在子进程中返回。

  • 相关阅读:
    定位的原理
    UE4 开发三维GIS 一 场景光影
    UE4 开发三维GIS
    hive
    atlas
    开源AI药物发现TorchDrug安装测试的那些坑
    使用Docker快速搭建zabbix 5
    Docker简易部署
    简单的批量telnet 测试
    ASP.NET Core 中间件
  • 原文地址:https://www.cnblogs.com/ldy-miss/p/12889430.html
Copyright © 2011-2022 走看看