vfork()atexit断言失败

我想了解下面这段代码

#include #include #include 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()是坏事和这些事情。我知道它是,但正是在这段代码中正在发生的事情导致了这种错误。 提前致谢

目前还不清楚你想要做什么或理解什么,但这里有一个略微编辑的手册 :

vfork()函数与fork(2)具有相同的效果,除非由vfork()创建的进程未定义行为。

  1. 修改pid_t类型变量以外的任何数据,用于存储vfork()的返回值
  2. 从调用vfork()的函数返回
  3. 在成功调用_exit(2)或exec(3)函数系列之前调用任何其他函数

你正在做两个: i++和3 printf("%d\n", i) 。 无论你期望什么,它都行不通。

作为旁注, vfork也不错。 只是棘手,危险,几乎没用,并从SUSv4中删除。