Hi Isaac !
On 14.03.2015 08:10, Isaac Dunham wrote:
Basic concept is that it creates a fifo, and treats the success of mkfifo
as a lock to determine whether it's the daemon or a writer.
If it's the daemon, it will
fork;
in the child:
exec the parser with the fifo as stdin
in the parent:
set a SIGCHLD handler that respawns the parser if the fifo is not empty,
open the fifo to write,
dump the environment into the fifo
sleep
Congratulations, you implemented the base functionality, I intended,
except I use some command line parameter to distinguished between
hotplug helper and parser. This is mainly for increased stability and
flexibility with no extra cost (due to BB startup / option handling less
code than fifo check).
... beside not (yet) implemented failure management
... has your approach a problem: The write side of the pipe (fifo) is
closed as soon as you exit the hotplug helper, which let the parser die
immediately too (except other hotplug run at exactly the same moment).
This way you get extra parser starts when events have slight delays.
With the possibility of race conditions (which need complicated failure
check and handling).
Therefore it's better to let a small process hold the fifo open and
available (skips need to recreate on every event). For no extra cost
this process can do the parser startup, signal management and failure
checks, as this automatically shares code otherwise also required in the
netlink part.
... and you got my "fifo manager".
While I don't think this approach should replace mdev, or that a long-running
fifo supervisor is a *good* solution for hotplug, it would certainly be
possible to do what Harald proposes - likely in 200-300 LOC.
So you don't think using a supervisor daemon like tcpsvd is a good
solution for waiting to incoming network requests? The intended "fifo
manager" does exactly this, it waits for incoming plug events and fire
up a plug service handler. ... What is wrong on this solution?
If we put the "fifo manager" into its own applet and call it fifosvd
giving the specific names on the command line, we get a general "fifo
supervisor" which may be used for several different IPC operations,
mainly when using shell script driven Busybox based system operation.
--
Harald
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox