实验

翻译 2015年11月18日 17:27:44

#include<sys/types.h>

#include<sys/stat.h>

#include<errno.h>

#include<fcntl.h>

#include<stdio.h>

#include<stdlib.h>

#include<limits.h>             

 

#define MYFIFO                 "/tmp/myfifo" /* 有名管道文件名*/

#defineMAX_BUFFER_SIZE            PIPE_BUF    /*定义在于limits.h中*/

      

int main(intargc, char * argv[]) /*参数为即将写入的字符串*/

{

       int fd;

       char buff[MAX_BUFFER_SIZE];

       int nwrite;

      

       if(argc <= 1)

       {

              printf("Usage: ./fifo_writestring\n");

              exit(1);

       }

       sscanf(argv[1], "%s", buff);

      

       /* 以只写阻塞方式打开FIFO管道 */

       fd = open(MYFIFO, O_WRONLY);

       if (fd == -1)

       {

              printf("Open fifo fileerror\n");

              exit(1);

       }

      

       /*向管道中写入字符串*/

       if ((nwrite = write(fd, buff,MAX_BUFFER_SIZE)) > 0)

       {

              printf("Write '%s' toFIFO\n", buff);

       }

      

       close(fd);

       exit(0);

}

 

(2)读管道的程序


 

#include<sys/types.h>

#include<sys/stat.h>

#include<errno.h>

#include<fcntl.h>

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<limits.h>             

 

#define MYFIFO                 "/tmp/myfifo"

#defineMAX_BUFFER_SIZE            PIPE_BUF /*定义在于limits.h中*/

 

int main()

{

       char buff[MAX_BUFFER_SIZE];

       int fd;

       int nread;

      

       /* 判断有名管道是否已存在,若尚未创建,则以相应的权限创建*/

       if (access(MYFIFO, F_OK) == -1)

       {

              if ((mkfifo(MYFIFO, 0666) < 0)&& (errno != EEXIST))

              {

                     printf("Cannot createfifo file\n");

                     exit(1);

              }

       }

      

       /* 以只读阻塞方式打开有名管道 */

       fd = open(MYFIFO, O_RDONLY);

       if (fd == -1)

       {

              printf("Open fifo fileerror\n");

              exit(1);

       }

      

       while (1)

       {

              memset(buff, 0, sizeof(buff));

              if ((nread = read(fd, buff,MAX_BUFFER_SIZE)) > 0)

              {

                     printf("Read '%s' fromFIFO\n", buff);

              }           

       }    

      

       close(fd);

       exit(0);

}

相关文章推荐

mininet+流量发送+实验环境搭建

Linux环境搭建 1. 我们选用的Linux系统是Ubuntu 12.04 desktop,用户名:wuhoo,密码:112358。   2. 本地安装mininet 1)先安装git,用来...

实验八 路由器静态路由配置

实验八 路由器静态路由配置 一、实验目标 掌握静态路由的配置方法和技巧; 掌握通过静态路由方式实现网络的连通性; 熟悉广域网线缆的链接方式; 二、实验背景   学校有新旧两个校区,...
  • Anne999
  • Anne999
  • 2017年03月24日 10:31
  • 1425

数据结构实验之二叉树五:层序遍历

数据结构实验之二叉树五:层序遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Descript...

用正交实验法设计测试用例

作者:xuhongge 来源:xuhongge的博客 正交实验法的由来 一、正交表的由来 拉丁方名称的由来 古希腊是一个多民族的国家,国王在检阅臣民时要求每个方队中每行有一个民族代表,每列也...

Java实验(9) 三角形类

从课本的GeometricObject类继承一个Triangle 类,并满足下列条件: 1、有3个私有double成员表示三条边,默认长度为1.0; 2、有1个无参构造方法,用于创建默认三角形; ...

结合Praat进行语音实验的步骤

近期更新了几篇Praat脚本从标注的TextGrid里提取数据一些脚本,发现有一些朋友会问到更细节的问题,于是有一个想法把结合Praat进行一个语音学上常用的实验研究的步骤都整理出来,希望对需要的朋友...

简单Profibus/DP实验系统的组建

简单Profibus/DP实验系统的组建 Writed by 远方 DND-DeviceNet 引言:       为了让更多刚接触到Profibus系...

java实验之swing图形用户界面程序设计及总结

8.1组件和容器 顶层容器有小应用程序(Applet和JApplet)、对话框(Dialog和JDialog)、框架(Frame和JFrame)。这些容器都存在于java.swing*;中. ...

数据压缩实验三:用c语言实现Huffman编码和压缩效率分析

实验原理: 1.Huffman编码 Huffman编码是一种无失真的编码方式,是可变字长编码(VLC)的一种。 Huffman编码基于信源的概率统计模型,它的基本思路是: 出现概率大的信源符号编长码,...

《算法竞赛入门经典》(第2版)第一章 部分实验题

1.5.2数据类型实验实验A1:表达式11111*11111的值是多少?把5个1改成6个1呢?9个1呢? 实验A2:把实验A1中的所有数换成浮点数,结果如何? 实验A3:表达式sqrt(-10)的...
  • elashu
  • elashu
  • 2015年10月25日 23:00
  • 296
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:实验
举报原因:
原因补充:

(最多只允许输入30个字)