Python论坛  - 讨论区

标题:[python-chinese] 不赋值就可以改变 变量的值吗?

2007年01月11日 星期四 01:20

Mike Green iasyb在yahoo.com.cn
星期四 一月 11 01:20:45 HKT 2007

!/usr/bin/python

import os
import sys
import time

try:
    forkPID = os.fork()
except OSError:
    os.exit("Unable to creat child process")
if forkPID != 0:
    print "Parent process executing"
elif forkPID == 0:
    print "child process executing"

ÉÏÃæ³ÌÐòÖеÄforkPID²»¾ÍÊÇos.forkµÄ·µ»ØÖµÂð£¿
ËüÓ¦¸ÃÖ»ÊÇÒ»¸öÖµ£¬»òÕßÊÇ0£¬»òÕß·Ç0, Ò²¾ÍÊÇ˵ÉÏÃæµÄ³ÌÐò£¬Ö»ÄÜÓÐÒ»ÐÐÊä³ö¡£
µ«ÊÇ£¬ÔËÐÐÖ®ºó£¬È´×ÜÄÜ¿´µ½Á½ÐÐÊä³ö¡£²»ÖªµÀÊÇΪʲô¡£

 __________________________________________________
¸Ï¿ì×¢²áÑÅ»¢³¬´óÈÝÁ¿Ãâ·ÑÓÊÏä?
http://cn.mail.yahoo.com
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070111/e6e11871/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月11日 星期四 02:24

swordsp sparas2006在gmail.com
星期四 一月 11 02:24:52 HKT 2007

On 1/11/07, Mike Green <iasyb at yahoo.com.cn> wrote:
>
> !/usr/bin/python
>
> import os
> import sys
> import time
>
> try:
>     forkPID = os.fork()
> except OSError:
>     os.exit("Unable to creat child process")
> if forkPID != 0:
>     print "Parent process executing"
> elif forkPID == 0:
>     print "child process executing"
>
> 上面程序中的forkPID不就是os.fork的返回值吗?
> 它应该只是一个值,或者是0,或者非0, 也就是说上面的程序,只能有一行输出。


不错,但更完整的说法应该是:(一个进程)执行一遍这段程序只会有一行输出。

但是,运行之后,却总能看到两行输出。不知道是为什么。
>

这就说明这段代码被执行了两遍,正好解释了os.fork()的含义:
从调用os.fork()这一刻起,系统中存在了两个进程(主进程和子进程),各自独立的从程序的当前状态继续往下运行。子进程完全拷贝了父进程的地址空间,
它们唯一的区别在于os.fork()的返回值(forkPID)不同。
所以,实际上是两个进程分别在if语句中判断了自己地址空间中的forkPID变量――并不是改变了变量的值,而是本来就有两个不同的forkPID变量。
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20070111/593254b6/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号