有没有办法将Win32 控制台中进程的标准输出重定向到命名管道?命名管道内置于 Windows 中,虽然它们是一个有用的概念,但我从未见过它们从命令行使用。
IE。喜欢example.exe >\\.\mypipe。(此语法可能不正确,但您明白了。)我希望能够同时将stdout和stderr重定向到不同的管道。
我想避免使用物理文件作为替代,以避免处理 IO 缓慢、IO 缓冲区、文件锁、访问权限、可用硬盘空间、决定覆盖、无意义的持久性等。
另一个原因是因为传统的 Windows工具集不像在 Unix 中那样围绕基于(文本)文件的哲学设计。此外,命名管道不能轻易安装在 Windows 中,如果有的话。
最后,好奇一个好的概念是否可以得到很好的使用。
我想使用 netcat 作为代理来记录 http 请求和对文件的响应,然后跟踪这些以检查流量。想想wireshark。
尝试了以下其中“fifo”是命名管道,“in”和“out”是文件,端口 8080 上的 netcat 代理,端口 8081 上的服务器。
虽然是真的;做猫fifo | nc -l -p 8080 | tee -a in | nc 本地主机 8081 | tee -a out 1>fifo; 完毕
问题:
Netcat 在第一次请求后停止响应(忽略循环?)。
localhost [127.0.0.1] 8081 (tproxy) : Connection refused如果服务器在 8081 上不可用,Netcat 将失败并显示 msg 。 问:是否可以在发出请求时“延迟”连接到 8081?即我不想让 8081 在 netcat 启动时运行。
例如,我有一个脚本将时间写入 /etc/pipe 中的管道。它在 while true 循环中连续写入。管道中的数据可以读取多长时间?如果我只决定在一天后使用 cat /etc/pipe 读取管道,我是否会从我开始写入时获得所有时间值?
相反,如果我的循环每 10 分钟只写一次时间会怎样。一天后我可以访问所有内容吗?
最后,假设我的循环连续写入时间(就像我的第一个示例一样),并且我每 30 分钟读取一次管道。如果我的计算机在我读取管道之前关闭,当我重新启动时管道是空的还是会保存所有数据?
我知道 Unix 文件系统有时看起来像是文件但实际上不是文件。中的文件dev实际上指向设备。也可以创建命名管道,这些管道看起来也是文件,但实际上是各种先进先出的消息队列。该proc目录包含基于进程、内存、硬件等的文件。
我试图更好地理解这些抽象,以决定我可以使用哪些抽象。Unix 伪装文件有多少种方式,管理员可以轻松实现/使用哪些方式?(即命名管道和符号链接很容易使用。)如果我知道这些概念的正确术语,我也许可以在网上找到详细信息。
named-pipe ×4
pipe ×3
linux ×2
unix ×2
bash ×1
command-line ×1
fifo ×1
filesystems ×1
netcat ×1
redirection ×1
tee ×1
windows ×1