linux实验5 Linux环境下的C语言编程

**

《网络操作系统》实验预习报告

**

一、实验目的
1、学会用系统调用和库函数进行编程
2、加深对进程概念的理解,明确进程和程序的区别。
3、进一步认识并发执行的实质。
4、分析进程竞争资源现象,学习解决进程互斥的方法。
5、了解Linux系统中进程通信的基本原理。
二、实验内容
1、用fork( )创建进程,观察进程的并发执行
2、使用管道、消息队列机制进行进程间通信
三、预习心得
这部分实验内容需要有一点c语言功底,学会用fork创建进程,观察进程的并发执行,还要学会使用管道、消息队列机制完成进程间通信,但是确实看了好半天都不会!

**

《网络操作系统》实验报告

**

一、实验目的
1、学会用系统调用和库函数进行编程
2、加深对进程概念的理解,明确进程和程序的区别。
3、进一步认识并发执行的实质。
4分析进程竞争资源现象,学习解决进程互斥的方法。
5、了解Linux系统中进程通信的基本原理。
二、实验内容
1、用fork( )创建进程,观察进程的并发执行
2、使用管道、消息队列机制进行进程间通信
三、实验操作
1、编写一段C语言程序使其完成:父进程创建两个子进程,每个进程都在屏幕上显示自己的进程ID号。 运行结果示例:
在这里插入图片描述

(1)vi forktest.c 先创建源文件forktest.c,编译源程序代码
在这里插入图片描述

(2)gcc -o forktest forktest.c 将文件编译为可执行文件
在这里插入图片描述

(3)./forktest 运行程序,结果正确
在这里插入图片描述

2、上机调试下面的程序,观察运行结果,分析原因。
#include <sys/types.h>
#include <unistd.h>
int glob=3;
int main()
{
pid_t pid;
int loc=3;
printf(“befor fork():glob=%d,loc=%d\n”, glob, loc);
if ((pid=fork()) < 0)
{
printf(“fork() error\n”);
exit(0); }
else if (pid == 0)
{
glob++;
loc–;
printf(“child:glob=%d, loc=%d\n”, glob, loc);
else
{
printf(“parent:glob=%d, loc=%d\n”, glob, loc);
exit(0);
}
return 0;
}
(1)创建test.c文件
(2)消除警告 添加include<stdlib.h> 和include<stdio.h> 添加}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3)生成可执行文件test,并执行
在这里插入图片描述
在这里插入图片描述

(4)调试过程 set follow-fork-child 追踪子进程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(5)子进程创建成功,输出创建子进程后变量的值
在这里插入图片描述

3、利用两个管道进行双向通信,实现父子进程协作把整数x从1加到10。
运行结果示例:
#./pipetest
child 5938 read: 1
parent 5937 read: 2
child 5938 read: 3
parent 5937 read: 4
child 5938 read: 5
parent 5937 read: 6
child 5938 read: 7
parent 5937 read: 8
child 5938 read: 9
parent 5937 read: 10
(1)创建piptest.c文件
在这里插入图片描述
在这里插入图片描述

(2)生成可执行文件,并运行
在这里插入图片描述

4、利用消息队列实现父子进程的通信。父进程创建消息队列,并向消息队列发送消息;子进程接受消息;父进程等待子进程接收消息后删除消息队列。
运行结果示例:

#./msgtest
Parent:Send to the message queue successfully!
The message sent is :This is the input!
Child:Receiving from the message queue:This is the input!

(1)代码创建文件
在这里插入图片描述
在这里插入图片描述

(2)执行结果
在这里插入图片描述

四、源程序清单、测试数据及结果
(1)在这里插入图片描述

(2)在这里插入图片描述

(3)
在这里插入图片描述

(4)

在这里插入图片描述

所有详细程序具体指令都在步骤三,见各题目下方

五、实验小结
本次实验花费时间太长,通过本次实验,很好的掌握了知识要点和具体命令要求,收获颇多,仍需要多练习!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值