linux – 使用与直接写入相同的效果/行为写入正在运行的进程的stdin

前端之家收集整理的这篇文章主要介绍了linux – 使用与直接写入相同的效果/行为写入正在运行的进程的stdin前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个 post只回答了我的部分问题.我的问题是使用/ proc文件系统上的进程FD写入正在运行的进程的标准输入不具有相同的效果.

问题:

>启动nc以侦听端口10000(此过程称为进一步的nc 1)

nc -l 10000

>启动另一个nc将chars发送到监听nc(这将是nc 2)

nc localhost 10000

>写入nc 2上的stdin

echo "some chars here" >> /proc/[PID-nc-2]/fd/0

问题:“这里的一些字符”没有听到nc(nc 1),但是在nc 2的控制台上显示了.

题:
为什么并且有可能使这个工作?

解决方法

这不能按预期工作,因为/ proc /< PID> / fd / 0不是管道.如果您调用发送方并将其stdin连接到管道,它将起作用

在接收主机上

nc -l 10000

在发送主机上

mkfifo my.fifo
cat >my.fifo &
cat my.fifo | nc remotehost.tld 10000

现在你可以

echo "Hello World" >my.fifo
myprog >my.fifo

请注意,cat> my.fifo需要保持fifo打开,否则会发送EOF并且连接过早关闭.要关闭连接,您需要杀死保持fifo打开的cat进程.

猜你在找的Linux相关文章