Hi All,
I am facing problem in launching a application with the help of a daemon process. Actually the application is based on command line that reads various commands for controlling the application from the console and accordingly executes those commands. The application always interact with console and try to read the command in while loop such as:
std::getline(std::cin, cmd);
if(std::cin.fail())
{
//stop the reading and execution of application
}
In daemon program that launches the application as a child process, after forking and in child process, after setting sid and chdir, we close the descriptor like
close(STDOUT_FILENO);
close(STDERR_FILENO);
but does not closing the STDIN_FILENO so that the application can read the command from STDIN_FILENO. Daemon process does fork and execv the application so that application can run as a child of daemon process. On Linux, this daemon program for running the application as a child process is working fine. Daemon program runs the application successfully on Linux platform and runs as per the expectation.
But when running the daemon program from windows with the help of plink (for executing the daemon process on Linux platform from window), plink executes the daemon and the daemon process executes the application on Linux but just after 1-2 seconds, application and daemon both stop their execution and child of the application run as a daemon process. Except the child of application, rest all other process like main daemon program, application are stopping the execution. Could you please suggest me what is causing the problem and why from windows (with the help of plink) daemon process and the application is not running as expected on Linux.
Anyone with knowledge of how to get rid of these would be greatly appreciated.
Thanks