简体   繁体   中英

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?

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM