一. 实验目的
1.掌握Linux创建进程。
2.掌握Linux父子进程同步。
3.掌握Linux子进程的重新加载。
4.进一步熟悉linux下vi的使用和C源程序的编译与运行。二. 实验准备
1. 创建子进程函数:
fork()
说明:返回值 0 创建成功,从子进程返回
>0创建成功,从父进程返回,其值为子进程的PID号
-1创建失败
2. 进程终止函数:
exit(int status)
说明:是一个不返回函数,所用头文件#include<stdlib.h>
3. 父进程等待子进程终止函数:
(1)wait()
(2)waitpid()
说明:头文件#include<sys/wait.h>
#include<sys/types.h>
返回值:≥0 表示有子进程终止,其值为终止子进程的pid号
-1 表示无子进程终止
三.实验内容
编译实验,分析运行结果
1、 程序1(test1.c):要求画出进程家族树
#include <stdio.h>
int main(void)
{
fork ( );
fork ( );
fork ( );
putchar( ‘A’ );
}2、 程序2(test2.c)
#include <stdio.h>
int main(void)
{
int p1;
putchar(‘x’);
while((p=fork())= =-1);
if(p1= =0)
putchar(‘b’);
else
putchar(‘a’);
putchar(‘y’);
}3、 程序3(test3.c)
#include <stdio.h>
int main(void)
{
int p1;
putchar(‘x’);
while((p=fork())= =-1);
if(p1= =0)
{
putchar(‘b’);
exit(0);
}
else
putchar(‘a’);
putchar(‘y’);
}4、 程序4(test4.c)
#include <stdio.h>
int main(void)
{
int p1;
int x=1;
while((p=fork())= =-1);
if(p1= =0)
{
putchar(‘b’);
x=9;
printf(“%d”,x);
}
else
{
putchar(‘a’);
printf(“%d”,x);
}
}5、 程序5(test5.c)
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
int main(void)
{
int p1;
while((p=fork())= =-1);
if(p1>0)
{
wait(0);
putchar(‘b’);
}
Else
{
putchar(‘a’);
exit(0);
}
}6、
(1)子进程程序(chld.c)
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
main( )
{
Printf(“I am child
”);
Exit(0);
}(2)父进程程序(test6.c)
#include <unistd.h>
#include <stdio.h>
int main()
{
Int p
While((p=fork())= = -1);
If(p= =0)
Execl(“./chid”,0);
Else
{
Wait(0);
Exit(0);
}
}
四.实验报告
实验课题、目的与主要内容要求,实际进行的实验详细记录及每一个实验阶段环节的分析与结论。
在CentOS上升级VLC至最新版本Linux Fedora 14下采用代理时yum命令失效问题解决方法相关资讯 Linux
- Linux 即将 25 岁:足够伟大 却不 (01月01日)
- Linux 这么棒是因为开源? (08/28/2015 09:21:02)
- FreeBSD 和 Linux 有什么不同? (07/31/2015 09:15:06)
| - 盘点全球“国家级” Linux 项目 (09/25/2015 06:11:28)
- 庆祝 Linux 24 岁生日! (08/26/2015 06:13:36)
- 【观点】离了Linux,我就活不了! (10/31/2013 19:39:56)
|
本文评论 查看全部评论 (0)