code_fodder
code_fodder

Reputation: 16321

bash linux - write and read from stdin and stdout

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

Answers (1)

Kubator
Kubator

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

Related Questions