I want to create a Java console application that runs as a daemon on Linux, I have created the application and the script to run the application as a background daemon. The application runs and waits for command line input.
Is it possible to pass command line input to a running daemon?
All running processes have a special directory under
/proc containing information and hooks into the process. Each subdirectory of
/proc is the PID of a running process. So if you know the PID of a particular process you can get information about it. E.g.:
$ sleep 100 & ls /proc/$! ... cmdline ... cwd environ exe fd fdinfo ... status ...
Of note is the
fd directory, which contains all the file descriptors associated with the process.
2 exist for (almost?) all processes, and
0 is the default stdin. So writing to
/proc/$PID/fd/0 will write to that process' stdin.
A more robust alternative is to set up a named pipe connected to your process' stdin; then you can write to that pipe and the process will read it without needing to rely on the
/proc file system.
See also Writing to stdin of background process on ServerFault.