fork()函数使用–实验
实验目的:理解程序创建新进程的方法,观察并发执行的现象。
实验原理:fork()建立子进程,子进程得到父进程地址空间的一个复制
实验内容:首先分析一下程序运行时其输出结果有哪几种可能性,然后实际调试该程序观察其实际输出情况,比较两者的差异,分析其中的原因。
void main(void){
int x=5;
if(fork()){
x+=30;
printf("%d\n",x);
}
else
printf("%d\n",x);
printf("%d\n",x);
}
实验过程:
实验源码:
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
int main()
{
int x=5;
if(fork()) {
x+=30;
printf("%d\n",x);
} else
printf("%d\n",x);
printf("%d\n",x);
return 0;
}
实验结果:
(1) 5 5 35 35
(2) 35 35 5 5
结果分析:fork ()函数是程序创建子进程的调用函数,若子程序创建成功,则对子程
序返回0,对父进程返回子程序的D;若不成功,则返回-1。
子进程和父进程的可执行程序是同一个程序,上下文和数据,绝大部分就是
原进程(父进程)的拷贝,但它们是两个相互独立的进程,fork)以后, 子进程
就相当于父进程的兄弟一样了。这个子进程和父进程不同的地方只有他的进程
ID和父进程D其他的都是一样.f