一、实验目的
通过本实验学习如何创建Linux进程及线程,通过实验,观察Linux进程及线程的异步执行。理解进程及线程的区别及特性,进一步理解进程是资源分配单位,线程是独立调度单位。
二、实验环境
硬件环境:计算机一台,局域网环境;
软件环境:Linux Ubuntu操作系统,gcc编译器。
三、实验内容和步骤
1、进程异步并发执行
(1)
编写一个C语言程序,该程序首先初始化一个count变量为1,然后使用fork函数创建两个子进程,每个子进程对count加1后,显示“I am son, count=x”或“I am daughter, count=x”,父进程对count加1之后,显示“I am father, count=x”,其中x使用count值代替。最后父进程使用waitpid等待两个子进程结束之后退出。
编译连接后,多次运行该程序,观察屏幕上显示结果的顺序性,直到出现不一样的情况为止,并观察每行打印结果中count的值
#include<unistd.h>
#include<stdio.h>
int main()
{
pid_t son_pid,daughter_pid;
int count = 1;
son_pid = fork();
if(son_pid == 0){
count ++;
printf("i am son, count = %d\n", count);
}
else{
daughter_pid = fork();
if(daughter_pid == 0){
count++;
printf