当前位置:文档之家› 实验4 进程创建和控制

实验4 进程创建和控制

实验四Linux进程创建和控制
一、实验目的
1、加强对进程概念的理解;
2、明确进程与程序的区别;
3、进一步认识并发执行的实质;
二、实验内容
1. 进程的关系
(1)下面程序中,主程序调用了3个fork()(fork()功能请参考实验教材P122),最后输出一个字符串,请多次运行这个简单的程序,观察并分析运行结果,(将原因写在实验报告中)。

#include<stdio.h>
main()
{
fork();
fork();
fork();
printf(“S\n”);
}
(2) 运行下面程序,观察并分析运行结果。

#include <unistd.h>
#include <sys/types.h>
main()
{
int pid;
pid=fork();
if(pid<0)
printf(“error in fork”);
else if(pid==0)
printf(“I am the child process, my process id is %d\n”,getpid());
else
printf(“I am the parent process, my process id is %d\n”,getpid());
}
2. 进程的创建
完善下面一段程序,使用系统调用fork()创建两个子进程。

当此程序运行时,在系统中有一个父进程和两个子进程活动。

让每个进程在屏幕上显示一个字符:父进程显示字符”a”,子进程分别显示字符”b”和”c”。

观察记录屏幕上的显示结果,并分析原因。

#include <stdio.h>
main()
{
int p1,p2;
while();
if()
putchar('');
else
{
while();
if()
putchar('');
else
putchar('');
}
}
3. 进程的控制
修改上面程序,将每个进程的输出由单个字符改为短语(如让父进程显示字符串”parent”),观察程序执行结果,并分析其原因。

(选做)如果在程序中使用系统调用lockf()给每个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。

三、实验讨论
谈谈你今天上实验课的收获,存在的问题或疑问。

如果有实验内容以外的发现也可谈谈。

相关主题