mkfifo sh nc
mkpipe
众所周知
ls | grep hey
中的竖线是pipe,
同样,我们可以用mkfifo创建命名的管道
创建
1 | mkfifo /tmp/pipedemo |
输入
1 | ls > /tmp/pipedemo |
读出
1 | cat < /tmp/pipedemo |
输入和读出不用保证执行顺序
sh -i
众所周知
0 是一个文件描述符,表示标准输入(stdin)
1 是一个文件描述符,表示标准输出(stdout)
2 是一个文件描述符,表示标准错误(stderr)
而sh -i
可以强制交互模式
nc
最后就有了, nc文档上的实例,既可以做server又可以做client
服务端
1 | # 清除并创建fifo 的管道(看权限是`rw-rw-r--`) |
客户端
1 | nc 127.0.0.1 1234 |
/bin/sh 输出到服务端127.0.0.1:1234,作为输入
用户连接上127.0.0.1:1234,接受到上面的输入
用户敲入命令,发送给服务端127.0.0.1:1234
服务端输出重定向到/tmp/f中
/tmp/f 被cat出 定向给 /bin/sh
/bin/sh接受输入并反馈出输出给 服务端
服务端返回给客户端
搜还搜到了一个
https://www.dartmouth.edu/~rc/classes/ksh/welcome.html#top
参考
man sh
man mkfifo
man nc