Reputation: 16321
I have an application which I can run from the commonand line and it acts like a CLI for me.
However its part of a suite of applications and now I want them all to run on boot up and so they are being started as a service (systemd).
So all my apps includeing my CLI are running great. However I can't see the output of the CLI and I can't send commands to it.
I was using the stdout to print the CLI screen - I guess I can work around this by outputting to a file - but it would be nice to get access to its stdout. The bigger issue is that I can't write to its stdin.
I read this: writing-to-stdin-of-background-process and tried to echo -e "command\n" > /proc/.../0
, but nothing happened - I checked the log of my CLI (gets written to a file) and it did not get the input.
I then did a ls -l
on /proc/<pid>/fd/
and I notice that 0 --> /dev/null
meaning stdin is linked to /dev/null.
So, how can I get access to its stdin?
Bonus question - is there a way to operate (in the same bash shell) such that I re-direct my stdin to the stdin of this process AND redirect the process stdout to my shell?
Upvotes: 2
Views: 1862
Reputation: 1383
Find the terminal (pty) that You want to redirect. Example for pty0 redirection can be done via:
exec < /dev/pty0 #stdin
exec > /dev/pty0 #stdout
Upvotes: 2