linux进程间的通信实验,linux实验进程之间的通信.doc
院 系: 计算机学院
实验课程:linux内核设计与实现
实验项目:进程之间的通信
指导老师:冯刚
开课时间: 2010 ~ 2011 年度第 2 学期
专 业:计算机科学与技术(师范)
班 级:2班
华南师范大学教务处
一、实验名称
进程之间的通信
二、实验目的
为了理解和掌握UNIX和Linux进程通信系统调用的功能,这里给出了进程通信实现机制中使用的系统调用命令的格式和如何利用系统调用命令进行进程通信编程,以便通过学习,提高学生对进程通信系统调用的编程能力。
三、实验内容
编写一个有名管道程序。一个(客户)进程从键盘循环读一系列字符,将这些字符和发送者的pid发给服务器进程,让其统计输入的是字符还是数字,分别为多少个,完成后再向客户进程发回服务的结果,由客户进程输出。
源程序:
//client.c
#include
#include
#include
#include
#include
#include
#include
#include
#define m S_IRUSR|S_IWUSR
int main()
{
char buf[BUFSIZ];
int f1,f2,len,ret;
ret=mkfifo("fifo_c",m);//创建有名管道fifo_c
if(ret==-1)//若创建失败,输出提示
{
printf("can't creat\n");
return 1;
}
f1=open("fifo_c",O_WRONLY);//以只写方式打开fifo_c
if(f1==-1)//若打开失败,输出提示
{
printf("can't open\n");
return 1;
}
while((f2=open("fifo_s",O_RDONLY))==-1)//以只读方式打开fifo_s
sleep(1);
while(1)
{
printf("input a string:");
scanf("%s",buf);//键盘输入字符串
if(strcmp("quit",buf)==0)//若输入“quit",则退出客户端程序
{
close(f1);
unlink("fifo_c");
close(f2);
exit(0);
}
write(f1,buf,strlen(buf));//向管道fifo_c写数据
len=read(f2,buf,BUFSIZ);//从管道fifo_s读数据
if(len>0)
{
buf[len]='\0';
printf("server answer:\n num:%s\n",buf);
}
len=read(f2,buf,BUFSIZ);//从管道fifo_s读数据
if(len>0)
{
buf[len]='\0';
printf(" letter:%s\n",buf);
}
}
return 0;
}
//server.c
#include
#include
#include
#include
#include
#include
#include
#include
#define m S_IRUSR|S_IWUSR
//函数itos将整数v转化为字符数组s
void itos(int v,char *s)
{
int i=0,len;
char t;
if(v==0)
s[i++]='0';
while(v)
{
s[i++]=(v%10+'0');
v/=10;
}
s[i]='\0';
len=strlen(s);
for(i=0;i
{
t=s[i];
s[i]=s[len-i-1];
s[len-i-1]=t;
}
return;
}
int main()
{
char buf[BUFSIZ];
char buf1[BUFSIZ];
int f1,f2,len,ret,i,letter,num,c;
ret=mkfifo("fifo_s",m);;//创建有名管道fifo_s
if(ret==-1)//若创建失败,输出提示
{
printf("can't creat
linux进程间的通信实验,linux实验进程之间的通信.doc相关推荐
- Linux虚拟机之间的通信以及与Windows主机之间的通信
Linux虚拟机之间的通信以及与Windows主机之间的通信 参考 1.打开vm,选择编辑选项,打开其下的虚拟网络编辑器,如下图所示: 2.查看电脑主机的ip地址,win+R输入cmd回车,进入cmd ...
- linux进程间Socket速率,用socketpair()进行进程间的全双工通讯
用socketpair()进行进程间的全双工通讯 /************************************************* * description: use sock ...
- linux 和服务通讯,Android 的Activity和Service之间的通信
在Android中Activity负责前台界面展示,service负责后台的需要长期运行的任务.Activity和Service之间的通信主要由IBinder负责.在需要和Service通信的Acti ...
- java进程间通讯方式有哪些_java 进程间通讯的有几种方法?
展开全部 进程间通信的方法主要有以下几种: (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另32313133353236313431303231363533e78988e6 ...
- android单片机wifi通信原理,基于单片机计算机之间无线通信实现.doc
基于单片机计算机之间无线通信实现 课 程 设 计 报 告 学 院: 专业名称: 学生姓名: 指导教师: 时 间: TOC \o "1-3" \h \u 课程设计任务书 题目:基于单 ...
- 前端系统和后端服务器怎么通信,Kubernetes前端和后端之间的通信
对于本地开发,我有一个工作的minikube.我们有不同的服务部署.现在我想将前端连接到后端.Kubernetes前端和后端之间的通信 前端是一个角度的应用程序,并在其自己的服务生活. 后端是一个no ...
- qt 进程间切换焦点_Qt下的进程界面之间的鼠标焦点切换
目录 需求 有三个软件A.B.C.A是主要软件,B.C是辅助软件. ⑴ 在使用A的过程中,按N键可以呼出软件B,按M键可以呼出软件C.再次按下可以隐藏它们. ⑵ 在软件B.C都存在的条件下,按J键可以 ...
- angularjs组件间通讯_详解Angular2组件之间如何通信
组件之间的共享可以有好几种方式 父->子 input 方式 import {Component,Input} from 'angular2/core'; @Component({ selecto ...
- 51单片机学习笔记_6 IO通信:电脑与单片机之间的通信
通信 通信基础知识 单片机还可以通过IO口实现多种通信. 串行通信:一条数据线,一次发1bit,发很久. 并行通信:多条数据线,同时发送,发的速度快多了但是费用高.接收困难.抗干扰性差. 异步通信:发 ...
- java安卓模拟器和电脑通信_java-两个Android模拟器之间的通信
您需要在Windows 7计算机上安装TELNET.为此,控制面板->程序和功能->打开或关闭Windows功能-> Telnet客户端(必须选中). 然后,在cmd(命令提示符)中 ...
最新文章
- 快速创建 shell脚本
- powerdesigner生成数据库文档
- sql privot
- .Net开发环境配置[OS/IIS/VS...]
- cassandra可视化_容器化Spring Data Cassandra应用程序
- Feign api调用方式
- Java 并发编程阅读笔记
- 《Greenplum5.0 最佳实践》 内存与资源队列 (四)
- 小程序 自适应rpx
- 用什么软件可以检测苹果耳机芯片_苹果现在要用 AirPods,彻底占据你的耳朵了...
- 谷歌云盘快速下载大文件
- Docker容器的资源使用限制
- svn 分支上新增文件合并发生冲突_windows 下svn 创建分支 合并分支 冲突
- 爬虫爬取全国地名的中文和拼音
- basler 相机取图超时,basler 相机使用出现的问题
- 未来规划——北京大学数院432应用统计备考攻略
- 将“闲置资源”重新利用,这家公司重组闲置市场
- vue动态调节背景图片
- MySQL面试题经典40问!(全)
- Windows10 1607版本锁屏聚焦黑屏问题解决办法
热门文章
- 【ROS小车8】_小车硬件组成
- Seabron作图:
- Mc1.16forge官混教程/教补-#1 开发环境配置的注意要点
- ps -aux | grep 用法
- 入营要求985/211,中国科学技术大学计算机学院2022年夏令营来袭
- sql语句choose/when/otherwise使用注意
- 转:网络安全法重点解读
- php h5 调用摄像头_利用html5调用本地摄像头拍照上传图片
- OC--Foundation框架
- arduino 驱动_Arduino驱动的My Little Pony捐款箱