这篇文章只回答了我的部分问题。我的问题是,使用 /proc 文件系统上的进程的 FD 写入正在运行的进程的 stdin 不会产生相同的效果。
问题:
启动 nc 侦听端口 10000(此过程进一步称为 nc 1)
nc -l 10000
Run Code Online (Sandbox Code Playgroud)启动另一个 nc 向监听 nc 发送字符(这将是 nc 2)
nc localhost 10000
Run Code Online (Sandbox Code Playgroud)写入 nc 2 上的标准输入
echo "some chars here" >> /proc/[PID-nc-2]/fd/0
Run Code Online (Sandbox Code Playgroud)问题:“这里有一些字符”没有进入监听 nc (nc 1),但显示在 nc 2 的控制台上。
问题:为什么以及是否有可能使它起作用?
use*_*517 11
这不像您期望的那样工作,因为/proc/<PID>/fd/0它不是管道。如果您调用发送端并将其标准输入连接到管道,它将起作用
在接收主机上
nc -l 10000
Run Code Online (Sandbox Code Playgroud)
在发送主机上
mkfifo my.fifo
cat >my.fifo &
cat my.fifo | nc remotehost.tld 10000
Run Code Online (Sandbox Code Playgroud)
现在你可以
echo "Hello World" >my.fifo
myprog >my.fifo
Run Code Online (Sandbox Code Playgroud)
请注意,cat >my.fifo需要保持 fifo 打开,否则会发送 EOF 并且连接过早关闭。要关闭连接,您需要终止保持 fifo 打开的 cat 进程。
| 归档时间: |
|
| 查看次数: |
4492 次 |
| 最近记录: |