ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 一天一篇(5)

一天一篇(5)

原创 Linux操作系统 作者:huixshh 时间:2014-02-10 16:31:06 0 删除 编辑
最近找到了一个非常值得探究的代码。
如下:
#include"apue.h"
static void f1(),f2();
int main()
{
  f1();
  f2();
  write(STDOUT_FILENO,"hello/n",7);
  sleep(2);
  _exit(0);
}
static void f1()
{
  pid_t pid;
  if((pid=vfork())<0) err_sys("vfork error");
}
static void f2()
{
  char buf[1000];
  int i;
  for(i=0;i   buf[i]=0;
}
这个代码编译好执行好后,会出现段错误,主要原因是vfork.
关于vfork,主要区别于fork的是,vfork可以不用复制原先的父进程,而是通过直接使用父进程的栈空间,然后加上锁,之后再把f1的客空间给覆盖了,所以导致段错误。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29454248/viewspace-1079018/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 一天一篇(4)
下一篇: system V ipc msg
请登录后发表评论 登录
全部评论

注册时间:2014-01-21

  • 博文量
    6
  • 访问量
    7050