LINUX业答案.docVIP

  • 12
  • 0
  • 约6.09万字
  • 约 7页
  • 2016-12-25 发布于河南
  • 举报
1. 有如下的程序: #include sys/types.h main( ) { pid_t pid; pid = fork(); if(!pid) printf(this is child,my pid is %d\n,getpid()); else if (pid0) printf(this is parent,child has pid %d, and my pid is %d\n ,pid,getpid()); else printf(fork fail\n ); } 编译运行后得到如下结果: this is child, my pid is 3845 this is parent, child has pid 3845, and my pid is 3844. 试解释产生上述结果的原因,并分析程序的执行过程。 答案: 1. 原因:程序输出的两行是来自两个进程,是同一个程序的两次执行。 2. 程序的执行过程:主函数首先定义了一个pid_t类型的变量,然后执行到语句pid=fork(),此时操作系统会创建一个与父进程几乎相同的子进程。子进程和父进程共享代码空间;但它们是两个相互独立的进程!一旦子进程被创建,父子进程一起从fork处继续执行,相互竞争系统的资源。 3. fork之后父子进程除非采用了同步手段,否则

文档评论(0)

1亿VIP精品文档

相关文档