LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 578|回复: 0

请教关于vfork

[复制链接]
发表于 2004-4-13 16:16:27 | 显示全部楼层 |阅读模式
APUE中在说明vfork时举了下面的例子:
#include        <sys/types.h>
#include        "ourhdr.h"

int        glob = 6;                /* external variable in initialized data */

int
main(void)
{
        int        var;                /* automatic variable on the stack */
        pid_t        pid;

        var = 88;
        printf("before vfork\n");        /* we don't flush stdio */

        if ( (pid = vfork()) < 0)
                err_sys("vfork error");
        else if (pid == 0) {                /* child */
                glob++;                                        /* modify parent's variables */
                var++;
                exit(0);                                /* child terminates */
        }

        /* parent */
        printf("pid = %d, glob = %d, var = %d\n", getpid(), glob, var);
        exit(0);
}

当子进程用exit结束时,由于其在父进程的空间运行,所以exit关闭了所有标准I/O流.后面的printf由于标准输出被关闭,故返回-1.

但是,我试验的结果是仍然输出
before vfork
pid = 4381, glob = 7, var = 89
这是为什么?难道linux下面的vfork有所改变?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表