资源简介
两个独立的程序 master 和 client,要求这两个程序完成以下功能:
(1) master 和 client 分别创建一个子进程;
(2) client 完成创建子进程后,其子进程等待用户从键盘输入一串字符串,并将字符串通
过 clinet 发送到 master;
(3) master 完成创建子进程后,等待接收 client 发送的字符串,接收完成后,将接收的
字符串发送给其子进程,子进程接收字符串后,打印出接受到的字符串内容,同时通过 master
向 client 发送接收成功响应;
(4) client 发送字符串后,等待 master 响应,并打印通知用户通信成功;
(5) 设定一个终止条件,当终止条件被触发时,将两个程序退出。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#define READ 0
#define WRITE 1
#define FIFO1 “/root/Desktop/FIFO1“ /*有名管道的名字*/
#define FIFO2 “/root/Desktop/FIFO2“
#define LENGTH 50 /*字符数组的长度*/
int main()
{
pid_t pid;
int retfd1fd2; /*ret用来接收mkfifo返回的值,fd用来存放打开有名管道的文件描述符*/
char buf[LENGTH];
int filedis[2];
pipe(filedis);
if(access(FIFO1F_OK))//判断是否已经创建了有名管道,如果已经创建,则返回0否则返回非0的数
{
ret = mkfifo(FIFO10777); /*创建有名管道成功返回0失败返回-1*/
if(ret == -1) /*创建有名管道失败*/
{
printf(“error mkfifo“);
exit(1);
}
}
if(access(FIFO2F_OK))//判断是否已经创建了有名管道,如果已经创建,则返回0否则返回非0的数
{
ret = mkfifo(FIFO20777); /*创建有名管道成功返回0失败返回-1*/
if(ret == -1) /*创建有名管道失败*/
{
printf(“error mkfifo“);
exit(1);
}
}
if((pid=fork())== -1) //创建无名管道失败
{
printf(“error fork“);
return 0;
}
if(pid==0) //child
{
fgets(bufLENGTHstdin); //等待用户输入字符串
close(filedis[READ]);
//printf(“test1:%s\n“buf);
write(filedis[WRITE]bufstrlen(buf)); //发送给父进程
}
else //parent
{
close(filedis[WRITE]);
int len=0;
while(1) //等待接收子进程发来的数据
{
len=read(filedis[READ]bufsizeof(buf));
if(len>0) break;
}
//printf(“test2:%s\n“buf);
fd1 = open(FIFO1O_WRONLY); //写方式打开有名管道,不能同时以读写权限打开成功返回文件描述符,失败返回-1
if(fd1 == -1) /*打开失败*/
{
printf(“error: open fifo“);
exit(1);
}
write(fd1bufstrlen(buf)); //将数据通过有名管道发送到maseter
close(fd1);
fd2 = open(FIFO2O_RDONLY);
memset(buf‘\0‘sizeof(buf)); //清空buf
len=0;
while(1)
{
len=read(fd2buf2);
if(len>0&&buf[0]==‘O‘&&buf[1]==‘K‘)
{
printf(“%s“buf);
printf(“communication success!\nthis is client‘s parentid:%d\n“getpid());
break;
}
}
/* memset(buf‘\0‘sizeof(buf)); //清空buf 等待接收结束命令
len=0;
while(1)
{
len=read(fd2buf1);
if(len>0&&buf[0]==‘q‘)
{
close(fd2);
break;
}
}*/
printf(“end\n“);
}
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2367 2019-01-07 18:42 master.c
文件 2595 2019-01-07 18:39 client.c
- 上一篇:stm32_RSA.zip
- 下一篇:黑马49期 品优购分布式电商项目全套视频及源码
相关资源
- OV7670无fifo模块资料及stm32程序
- 操作系统实现请求分页存储管理页面
- USB2.0芯片cy68013高速bulk传输slave fifo模
- 带FIFO模块的OV7670的STM32测试程序
- xilinx fifo ip核文档说明
- ov7670带fifo的stm32f4程序
- 页面置换算法FIFO,LRU,NRU,OPT
- xilinx 官方fifo IP使用手册
- xilinxFIFO_IP核的datasheet
- FPGA+USB68013+SLAVEFIFO+SDRAM+FIFO
- OV7670中文数据手册无FIFO
- 操作系统课设 分页式存储管理内含
- STM32F103ZET6+FreeRTOS V8.2.3+kfifo巧夺天工
- Verilog实现的FIFO模型
- OV7725摄像头+FIFOAL422B 模块,只要是个
- FIFO设计原理,有异步同步fifo
- 异步fifo设计verilog源代码
- slave fifo 上位机程序
- STM32CUBE_DCMI_DMA_OV7670(无FIFO)_UART_PI
- 基于Nexys4 DDR的FPGA串口模块,带缓冲
- 无FIFO摄像头 DMA传送关闭DMA中断.zip
- 基于verilog的带fifo的串口设计
- zcu102用PL读写DDR4
- Altera FIFO开发资料
- FIFO_delay.rar
- STM32上实现12864液晶二维码的显示,
- 页面置换算法FIFO:先进先出 NUR: 最近
- 操作系统模拟分页式存储管理中硬件
- 页面置换算法FIFO,LRU,最佳和Clock四
- TI DSP 28335 串口非FIFO中断接收程序
评论
共有 条评论