• mknod创建命名管道(I/O缓存)



     

     /etc/mknod pipe_name p      参数p 必须出现在命名管道名字之后



       为什么用mknod创建文件,而不用touch呢?
    touch 只能创建普通文件,
    管道、字符设备、块设备等特殊文件就要用 mknod

       管道文件是p打头的
    $ mknod pipe1 p
    $ ls -l
    -rw-rw-r--  1 macg macg     108 Jan 20 02:21 111-tmp.txt
    -rw-rw-r--  1 macg macg 1269764 Jan  3 11:24 asian_0264_4.mpg
    prw-rw-r--  1 macg macg       0 Jan 20 09:51 pipe1


        通过管道文件,可以实现两个程序(可以从不同机器上telnet)实时交互
    O    一些进程就可以不断地将信息写入管道文件
    I    另一些进程也可以不断地从管道文件中读取信息
    对命名管道文件的读写操作是可以同时进行的

        一个管道文件作为两台机器的I/O通信通道,但这个文件不能用touch建立,必须用mknod建立

    $ vi in.sh
    if [ ! -p pipe1 ]
    then
      mknod pipe1 p
    fi

    while true
    do
      read msg               这里read msgmsg是来自done <pipe1
      if [ "$msg" = "" ]
      then
    continue
      else
    echo " $msg"
      fi
    done < pipe1  

    看效果

    一台机器起用in.sh
    $ sh in.sh
     另一台执行任意命令,把输出定向到pipe1
     total 1320
     -rw-rw-r--  1 macg macg     108 Jan 20 02:21 111-tmp.txt
     prw-rw-r--  1 macg macg       0 Jan 20 10:23 pipe1
     -rw-rw-r--  1 macg macg     173 Jan 20 03:07 ttt1
     -rw-rw-r--  1 macg macg      64 Jan 20 05:40 ttt.sh

    this is from anonther user
    $ ls -l > pipe1
    $
    $ echo "this is from anonther user" > pipe1
    $


     
        exec 建立的I/O文件,建立用<> ,引用用&

    建立 exec 8<>pipe1
    引用 telnet 192.168.1.12 <&8
    引用I/O BUFFER要加&


       
                     
       exec 指令的<>之间不能有空格,否则报错


    [macg@localhost tiptest]$ exec 8 <> pipe1
    -bash: exec: 8: not found
    [macg@localhost tiptest]$ exec 8<>pipe1
  • 相关阅读:
    基于SOA分布式架构的dubbo框架基础学习篇
    项目管理 绩效考核
    性能测试晋级教程
    从页面走向单元实现真正的业务驱动
    微软的开源Sonar工具测试网站的性能和安全性
    2.动手实操Apache ZooKeeper
    1. Apache ZooKeeper快速课程入门
    开发人员的福音:微软、谷歌、Mozilla将他们所有的Web API文档放在同一个地方
    Happy Java:定义泛型参数的方法
    比较两个文件不同以及生成SQL插入语句
  • 原文地址:https://www.cnblogs.com/noobkey/p/3125579.html
Copyright © 2020-2023  润新知