zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    远程访问Linux的常见方式
    GIT的安装与使用
    01_c语言学习之gcc
    车轮——项目 --- 云笔记
    python 基于ubuntu16.04 建立虚拟环境
    利用msfvenom生成木马
    msfvenom参数简介
    kali linux修改更新源及更新
    记通过mysql数据库成功入侵到服务器内部的渗透实战
    UML 几种关系:泛化、关联
  • 原文地址:https://www.cnblogs.com/noobkey/p/3125579.html
Copyright © 2011-2022 走看看