This post answers only partial my question. My problem is that writing to the stdin of the running process using the FD of process on the /proc filesystem does not have the same effect.
Problem:
start nc to listen on port 10000 (this process is called further nc 1)
nc -l 10000
start another nc to send chars to the listening nc (this will be nc 2)
nc localhost 10000
Write to the stdin on the nc 2
echo "some chars here" >> /proc/[PID-nc-2]/fd/0
the problem: "some chars here" do not get to the listening nc (nc 1), BUT are shown on the console of the nc 2.
Question: why and is it possible to make this working?
This doesn't work as you expect because
/proc/<PID>/fd/0
isn't a pipe. If you invoke the sending side with it's stdin connected to a pipe it will workOn the receiving host
On the sending host
Now you can
Note that the
cat >my.fifo
is required to keep the fifo open otherwise an EOF gets sent and the connection gets closed prematurely. To close the connection down you need to kill the cat process that is holding the fifo open.As stated in the answer to the post you linked, you need to write to
/proc/pid/fd/0
, not/proc/pid/fd/1
.