首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vfork() atexit断言失败

vfork() atexit断言失败
EN

Stack Overflow用户
提问于 2011-10-15 22:42:11
回答 1查看 228关注 0票数 1

我正在尝试理解下面这段代码

代码语言:javascript
复制
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>

int main()
{
pid_t pid ;
unsigned int i=0;
pid=vfork();
switch(pid)
{
    case -1: // some sort of error
        puts("fork error");
        break;
    case 0: // the child process 
        while(i<100)
        {
            printf("%d\n", i);
            i++;
        }
        break;
    default: //parent
        while(i<1000)
        {
            printf("%d\n", i);
            i++;
        }
        break;
}
//  _exit(0);
}

请不要告诉我vfork()是不好的,这类事情.I知道它是坏的,但是在这段代码中到底发生了什么导致了这种错误。提前感谢

EN

回答 1

Stack Overflow用户

发布于 2011-10-15 22:45:45

不清楚你想做什么或理解什么,但这里有一段来自the manual的略微编辑过的引文

vfork()函数与

(2)具有相同的效果,不同之处在于行为是未定义的,如果vfork()创建的进程

  1. 会修改任何数据,但pid_t类型的变量除外,该变量用于存储来自调用vfork()的函数的返回值
  2. 在成功调用_exit(2)或exec(3)函数族之一

之前调用任何其他函数

您正在执行1:i++和3 printf("%d\n", i)。无论你期望什么,它都不会起作用。

顺便说一句,vfork还不错。只是棘手,危险,几乎毫无用处,并从SUSv4中删除。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7778497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档