linux函数实验报告,linux实验报告
(1) 使用vi命令编写程序pipe0.c: main() {
int fd[2];
char OutPipe[100],InPipe[100]; pipe(fd);
while((pid1=fork())== -1); if(pid1= =0) {
lockf(fd[1],1,0);
sprintf(OutPipe,“child 1 is sending message!”); /*把串放入数组outpipe中*/
write(fd[1],OutPipe,50); /*把串放入数组outpipe中*/ sleep(5); /*自我阻塞5秒*/ lockf(fd[1],0,0); exit(0); } else {
while((pid2=fork())== -1); if(pid2==0) {
lockf(fd[1],1,0); /*互斥*/ sprintf(OutPipe,“child 2 is sending message!”); write(fd[1],OutPipe,50); sleep(5); lockf(fd[1],0,0); exit(0); } else {
wait(0); /*同步*/
read(fd[0],InPipe,50); /*从管道中读长为50字节的串*/ printf(“%s\\n”,InPipe); wait(0); } } }
(2)运行结果:
21
在显示结果时:
child 2 is sending message!(延迟5秒后显示) child 1 is sending message!(再延迟5秒) (3)分析原因:
本实验利用函数pipe()建立通信管道,两个子进程分别向管道写入信号,父进程读取管道信号在显示,管道的写入操作分别加锁实现互斥操作。子进程1先建立,所以第一次读取的管道信号是子进程发来的,等待子进程1终止后再从管道读取信号,此时的信号是子进程2发来的。由于管道通信的互斥、同步等通信机制,执行结果不会再出现随机性。 2.在父进程中用pipe()建立一条管道线,往管道里写一句话,两个子进程接收这句话。 (1) 使用vi命令编写程序pipe1.c: main() {
int fd[2];
char OutPipe[100],InPipe[100]; pipe(fd);
while((pid1=fork())==-1); if(pid1==0)
{ sleep(2);
lockf(fd[0],1,0); read(fd[0],InPipe,50);
printf(\ printf(\
lockf(fd[0],0,0); exit(0); } else {
while((pid2=fork())==-1); if(pid2==0 ) { sleep(2); lockf(fd[0],1,0); read(fd[0],InPipe,50);
printf(\ printf(\
22
lockf(fd[0],0,0); exit(0); } else {
lockf(fd[1],1,0);
sprintf(OutPipe,\ write(fd[1],OutPipe,50); lockf(fd[1],0,0); sleep(5); wait(); sleep(5);
wait(); exit(0); } } }
(2)运行结果:
(3)分析原因:
本实验利用函数pipe()在父进程中建立通信管道,两个子进程分别接收来自父进程的写入信号。子进程1先建立,所以第一次读取的管道信号是子进程发来的,等待子进程1终止后再从管道读取信号,此时的信号是子进程2发来的。
二、流程图
开始 初始化变量 创建子进程pid1 否 子进程pid1创建是否成功? 是 当前是父进程? 否 创建子进程pid2 否 23 子进程pid2创建是否成功? 是 写入管道打印
三、实验总结
本次实验在编写程序pipe.c时,利用函数pipe()建立通信管道,两个子进程分别向管道写入信号,父进程读取管道信号在终端显示。在编写程序pipe1.c时,利用函数pipe()在父进程中建立通信管道,两个子进程分别接收来自父进程的写入信号。按照实验要求,发现两次的调试结果居然一样。我总结出此次实验主要是利用函数pipe()建立通信管道,子进程或父进程从通信管道读取信号然后在终端显示出来。
(四)消息的发送与接收实验
【实验目的】
1.了解什么是消息。 2.熟悉消息传送机理。 3.编程实现消息的发送与接收。
【实验内容】
一、消息的发送与接收
1.消息的创建、发送和接收。使用系统调用msgget( ),msgsnd( ),msgrev( ),及msgctl( )编制一长度为1k的消息发送和接收的程序。 (1) 使用vi命令编写程序client.c和server.c: ①client.c
void client()
24
linux函数实验报告,linux实验报告相关推荐
- linux 函数 缩小文件,linux文件系统的处理函数
文件系统 通用:rename(原路径名,新路径名); 修改文件名 remove(路径名); 删除文件或路径 symlink(原路径名,符号链接名); 建立文件或路径的软链接 access ...
- linux 函数手册 在线,Linux系统API函数手册
Linux系统API函数手册 (34页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 (一)文件操作篇 1.creat(建立文件)头文件1 ...
- linux 函数返回string,linux 下c函数strcmp的返回值疑问?
linux 下c函数strcmp的返回值疑问? strcmp函数解释: NAME strcmp, strncmp - compare two strings SYNOPSIS #include int ...
- linux 函数 文件校验,Linux中的文件效验命令
在网络传输.设备之间转存.复制大文件等时,可能会出现传输前后数据不一致的情况.这种情况在网络这种相对更不稳定的环境中,容易出现.那么校验文件的完整性,也是势在必行的. md5sum命令用于生成和校验文 ...
- linux 函数 增加用户,linux常用c函数用户组有哪些?
endgrent(关闭组文件) 相关函数 getgrent,setgrent 表头文件 #include #include 定义函数 void endgrent(void); 函数说明 endgren ...
- linux函数进程撤销,Linux进程控制函数
1. fork() #include #include pid_t fork(void); @一个进程可以调用fork函数创建一个新进程,由fork创建的进程被称为子进程,子进程是父进程的副本,它将获 ...
- linux系统进程控制实验报告,Linux进程控制实验报告.doc
里奴性进程控制实验报告 实验名称: Linux进程控制 实验要求:一.编写一个Linux系统C程序,由父亲创建2个子进程,再由子进程各自从控制台接收一串字符串,保存在各自的全局字符串变量中,然后正常结 ...
- 南工程c语言实验报告,Linux环境下-C语言编程实验报告(1)(总4页).doc
Linux环境下-C语言编程实验报告(1)(总4页).doc 西 安 邮 电 大 学 (计算机学院)课内实验报告实验名称 Linux环境下 C语言编程 专业名称 网络工程班 级 1203班 学生姓名 ...
- linux程序设计项目报告,Linux程序设计实验报告大作业
Linux程序设计实验报告大作业 实 验 报 告 课程名称: LINUX程序设计 学 院: 计算机学院 专 业: 软件工程 班 级: 14-3 姓 名: 张正锟 学 号: 201401061038 2 ...
最新文章
- HTTP协议解析之Cookie
- Android ListView重写Adapter
- keep 虚拟路线修改器_keep儿童版下载-keep儿童模式6.124.0手机版下载
- zabbix如何添加图表显示内容_Zabbix图表出现中文乱码解决方案
- PHP的php://
- 信息学奥赛一本通(1244:和为给定数)
- java 拟合曲线_如何通过指数曲线拟合数据
- Mysql的数据库引擎 区别特点_mysql数据库存储引擎及区别
- linux修改py内容,python中修改文件行内容
- 关于阿里云OSS报错-java.lang.ClassNotFoundException: org.jdom.input.JDOMParseException
- 为何python不好找工作-谁说Python找工作难?人生苦短,Python工程师你们还好吗?...
- sdut2355Binary Search Heap Construction
- 5)Thymeleaf 模板布局 th:fragment、th:replace、th:insert、th:remove
- 2本学计算机好就业吗,今年高三了,感觉考不上2本了,想读个好点的大专将来好就业。学什么技术好呢,汽修,数控,计算机还是别的什么,求支招,毕业5年后打算自己开店的。...
- PBRT 阅读 第一章
- html背景图片大小嵌套,div嵌套div 背景图片 不显示的问题
- 精读《图解密码技术》--第一章 环游密码世界
- æµè¯oschina
- 基于高斯两步移动搜寻法(2SFCA)的城市绿地可达性分析
- 安徽科技学院 信网学院网络文化节 孙晓楠