进程的创建-fork(python版)
2017-10-24 12:57
183 查看
进程的创建-fork
1. 进程 VS 程序
编写完毕的代码,在没有运行的时候,称之为程序正在运行着的代码,就成为进程
进程,除了包含代码以外,还有需要运行的环境等,所以和程序是有区别的
2. fork( )
Python的os模块封装了常见的系统调用,其中就包括fork,可以在Python程序中轻松创建子进程:import os # 注意,fork函数,只在Unix/Linux/Mac上运行,windows不可以 pid = os.fork() if pid == 0: print('哈哈1') else: print('哈哈2')
说明:
程序执行到os.fork()时,操作系统会创建一个新的进程(子进程),然后复制父进程的所有信息到子进程中然后父进程和子进程都会从fork()函数中得到一个返回值,在子进程中这个值一定是0,而父进程中是子进程的 id号
在Unix/Linux操作系统中,提供了一个fork()系统函数,它非常特殊。
普通的函数调用,调用一次,返回一次,但是fork()调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回。
子进程永远返回0,而父进程返回子进程的ID。
这样做的理由是,一个父进程可以fork出很多子进程,所以,父进程要记下每个子进程的ID,而子进程只需要调用getppid()就可以拿到父进程的ID。
3. getpid()、getppid()
import os rpid = os.fork() if rpid<0: print("fork调用失败。") elif rpid == 0: print("我是子进程(%s),我的父进程是(%s)"%(os.getpid(),os.getppid())) x+=1 else: print("我是父进程(%s),我的子进程是(%s)"%(os.getpid(),rpid)) print("父子进程都可以执行这里的代码")
运行结果:
我是父进程(19360),我的子进程是(19361) 父子进程都可以执行这里的代码 我是子进程(19361),我的父进程是(19360) 父子进程都可以执行这里的代码
相关文章推荐
- python中使用fork创建新的进程
- python中进程创建—fork()
- python fork()创建新的进程,daemon进程
- 【ZZ】python中使用fork创建新的进程
- 关于Python3中多次fork创建进程的问题
- python 创建进程fork
- python中使用fork创建新的进程
- python中使用fork创建新的进程
- python创建进程fork用法
- python中使用fork创建新的进程
- python创建进程fork用法
- python中使用fork创建新的进程
- Linux0.11内核--fork()函数创建进程
- Linux 进程创建一(system和fork)
- (推荐读)Python模块学习--创建子进程_想想再定_百度空间
- 用fork创建进程时,在子进程中 使用getppid 得到的返回值为啥总是1
- 【操作系统】linux创建子进程--fork()方法
- 举例讲解C语言的fork()函数创建子进程的用法
- GDB调试fork+exec创建的子进程的方法
- 进程创建(fork,wait,waitpid)