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?
mkfifo /tmp/hoo. And in the systemd file set:ExecStart=/bin/sh -c '/your/cli/command < /tmp/hoo'. Now if youecho -e "command\n" > /tmp/hoo"it should be piped to/your/cli/command./myapp < /tmp/hoo(after making the fifo) it does not seem to run the app until I do my first echo command to it. That's quite strange! - but it does start to work after thatecho command | /your/commandworks?