Hi,
I'm also afflicted with #52. The problem only occurs with system incronjobs, while user incrontabs are not affected.
In UserTable::OnEvent(…) these type of incronjobs are handled differently. Incrond fork()s and handles the logic in the child process. User incrontabs are invoked by jumping to UserTable::RunAsUser(…) which runs the specified command by execlp()ing, replacing the child process. System incrontabs' commands are run using system() which is basically another fork() and an execl() – leading to another child process and keeping the first child alive.
By replacing system() with execl() the first child should be replaced by the desired command and no additional incrond-processes should show up.
Please correct me if I'm wrong.
Hi, I'm also afflicted with #52. The problem only occurs with system incronjobs, while user incrontabs are not affected. In
UserTable::OnEvent(…)
these type of incronjobs are handled differently. Incrondfork()
s and handles the logic in the child process. User incrontabs are invoked by jumping toUserTable::RunAsUser(…)
which runs the specified command byexeclp()
ing, replacing the child process. System incrontabs' commands are run usingsystem()
which is basically anotherfork()
and anexecl()
– leading to another child process and keeping the first child alive. By replacingsystem()
withexecl()
the first child should be replaced by the desired command and no additional incrond-processes should show up. Please correct me if I'm wrong.