gpt4 book ai didi

Bash 脚本语句

转载 作者:行者123 更新时间:2023-12-04 06:04:14 25 4
gpt4 key购买 nike

我试图弄清楚一行在 bash 脚本文件中的含义:

mkfifo mypipe
nc -l 12345 < mypipe | /home/myprogram > mypipe

这是我的理解: nc -l 部分在端口 12345 上创建类似服务器端的行为,该行为从 mypipe 接收输入,将输出通过管道传输到程序,将程序输出通过管道传输回 mypipe。

我的问题首先是我的分析是否正确?二、mkfifo到底是什么东西,比如它是什么样的文件?我也不明白 nc -l 究竟输出了什么以便通过管道输入 myprogram。

谢谢你的帮助。

最佳答案

mkfifo创建一个管道文件。在这里,FIFO的意思是“先进先出”。无论一个进程写入管道,第二个进程都可以读取。它不是一个“真正的”文件——数据永远不会保存到磁盘上;但是Linux将其许多机制抽象为文件,以简化事情。
nc -l 12345将绑定(bind)到套接字 12345 并监听;当它捕获到一个传入连接时,它将标准输入传递给远程主机,并将远程主机的传入数据传递给标准输出。

因此,这里的架构是:

remote host -> nc -> regular pipe -> myprogram
myprogram -> mypipe -> nc -> remote host

有效地让 myprogram 和远程主机对话,即使 myprogram 被设计为从标准输入读取并写入标准输出。

由于 bash 管道 ( | ) 只处理一个方向的通信,因此您需要创建一个显式的第二个管道来进行双向进程间连接。

关于Bash 脚本语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8570795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com