forking是Unix和Linux最重要的一个点。

总结下其特点如下:

1,子进程与父进程的复制关系:

子进程拥有父进程的所有内存的精确副本。当使用fork给进程分叉时,它会创建一个自己的副本。在多线程环境中,fork意味着执行的线程是重复的,但是可以分开。因此,有的学者认为fork很像生物里克隆的概念。子进程克隆了父进程。获取了父进程的数据和代码。

2,相互独立关系

父进程和子进程的执行是相互独立的。fork操作为子进程创建了一个单独的地址空间。子进程从操作系统接收一个新的进程号PID号(PID,进程标识符)。

3,fork()的返回值:

fork的返回值决定当前正在进行的是哪一个进程:

0: 处于子进程中;

正值:处于父进程中;

负值:意味着操作系统在尝试调用Fork()函数时,发生了错误。

4,使用Fork需要导入os模块

import os

5,子进程的退出

子进程退出必须使用os.exit(0),否则子进程将返回到父进程中。

例:

import os

def child():

print('\nA new child ', os.getpid())

os._exit(0)

def parent():

while True:

newpid = os.fork()

if newpid == 0:

child()

else:

pids = (os.getpid(), newpid)

print("parent: %d, child: %d\n" % pids)

reply = input("q for quit / c for new fork")

if reply == 'c':

continue

else:

break

parent()

每当用户输入“c”时,它就会分叉。子进程和父进程都在“如果newpid==0:”语句之后继续。在父进程中,newpid的值大于0,在子进程中是0。

运行结果如下:

parent: 5280, child: 5281

A new child 5281

q for quit / c for new forkc

parent: 5280, child: 5282

q for quit / c for new fork

A new child 5282

c

parent: 5280, child: 5283

q for quit / c for new fork

A new child 5283

c

parent: 5280, child: 5284

q for quit / c for new fork

A new child 5284

父进程的PID号为5280,每输入一个“c”获得一个新的子进程,PID号分别为5281,5282,5283等。

fork linux 低权限,linux/Unix下python的fork详解及应用举例相关推荐

  1. 最全面的关于LINUX与UNIX下的dd命令详解

    dd命令功能很强大的,对于一些比较底层的问题,使用dd命令往往可以得到出人意料的效果.用的比较多的还是用dd来备份裸设备.但是不推荐,如果需要备份oracle裸设备,可以使用rman备份,或使用第三方 ...

  2. linux unix命令详解,最全面的关于LINUX与UNIX下的dd命令详解

    dd命令功能很强大的,对于一些比较底层的问题,使用dd命令往往可以得到出人意料的效果.用的比较多的还是用dd来备份裸设备.但是不推荐,如果需要备份oracle裸设备,可以使用rman备份,或使用第三方 ...

  3. linux select read阻塞_linux下的IO模型详解

    开门见山,Linux下的如中IO模型:阻塞IO模型,非阻塞IO模型,IO复用模型,信号驱动IO模型,异步IO模型,见下图 接下来一一讲解这5种模型 阻塞型IO:最简单的一种IO模型,简单理解就是死等, ...

  4. Ubuntu系统下Python虚拟环境构建详解

    在编程开发中,我们经常会利用不同版本的协助软件包,这样就导致一些软件不能兼容,为了解决这个问题呢,我们在儿引进Python虚拟环境,我们安装好虚拟环境之后,进一步激活它,然后在虚拟环境中运行不同程序, ...

  5. svn 服务器用户权限设置,mac下配置svn服务器详解及用户的权限管理

    首先,感谢jsntghf和星辰的天空的好文分享,不是他们的文章,我估计须要花费更多的精力和时间.在这里我只是对他们文章的润色和本身测试遇到问题的标注.html Mac自带了svn服务器和客户端,因此只 ...

  6. linux下top命令参数详解

    linux下top命令参数详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法. 内存信息.内容如下: ...

  7. Linux下的awk用法详解

    Linux下的awk用法详解 一.awk介绍 二.awk的语法 三.awk常见用法 四.awk其他用法 五.awk语言特性 一.awk介绍 1.AWK 是一种处理文本文件的语言,是一个强大的文本分析工 ...

  8. Linux下find命令用法详解

    Linux下find命令用法详解 学神VIP烟火 学神IT教育:XueGod-IT 最负责任的线上直播教育平台 本文作者为VIP学员 烟火 第一部分:根据文件名查找 1.在当前目录查找名称为test的 ...

  9. linux下测试ftp传输,linux下ftp命令使用详解---linux文件传输ftp命令

    linux下ftp命令使用详解---linux文件传输ftp命令 上一篇 / 下一篇  2010-12-18 09:15:35 / 个人分类:Linux ftp(file transfer proto ...

最新文章

  1. IDC dump 内存
  2. shell中用bc进行浮点运算(转帖)
  3. test of ui5 duplicate control id
  4. leedcode344. 反转字符串
  5. 鸿蒙os开源邀请全球开发者,全场景无缝连接 鸿蒙OS开源邀请全球开发者共助生态发展...
  6. winform TreeView树节点上下移动
  7. mysql 修改编码不成功解决办法
  8. jeb反编译导出Java工程_Android 反编译(JEB.android.decompiler)
  9. android缓存框架SimpleCache
  10. 卷积神经网络(CNN)之MNIST手写数字数据集的实现
  11. RISC-V架构能否有效挑战ARM和英特尔?
  12. GPS使用记录NMEA数据解析、RTK定位以及ntrip协议
  13. 【C语言】实现对一个8 bit数据(unsigned char类型)的指定位(例如第n位)的置0或者置1操作,并保持其他位不变。
  14. c语言及程序设计基础 pdf,《C语言程序设计基础》.pdf
  15. eds能谱图分析实例_SPC控制图公式_均值极差SPC控制图公式应用实例分析
  16. c语言 自动答题器,单片机原理作业—电子答题器(课程及设计).doc
  17. web前端面试题(必背面试题)
  18. python人工智能算法的方式_Python与人工智能
  19. 《中兴之路》3、神箭震天山——大汉军魂与耿恭的救赎
  20. 注意力机制学习 BAM

热门文章

  1. Kitten编程猫 里的一步积木设计原理
  2. scss支持的嵌套css规则
  3. SAP Spartacus PagelayoutComponent里的section和slot
  4. JSP里的System.out.println
  5. 介绍一个免费的采用人工智能放大老照片的在线网站
  6. 使用SAP Analytics Cloud展示全球新冠肺炎确诊总人数的分布情况
  7. why SpringComponentScanServer is needed
  8. why is list delete and edit icon rendered
  9. after markup mount - how is converted source code got executed
  10. SAP OData Total = 80是这样计算出来的