On Sat, Oct 17, 2015 at 12:38 PM, Laurent Bercot
<ska-dietl...@skarnet.org> wrote:
> On 17/10/2015 09:47, Denys Vlasenko wrote:
>>
>> If you have a program which does not know that it is being run by
>> inotifyd,
>> you can create a shim which does know that:
>>
>> #!/bin/sh
>> PROG "$@"
>> test "$?" = 111 && kill $PPID
>
>
>  Yes. You still have to know which program needs it and which one does
> not, and you have to run that shim for every program that does. This
> is code - a longer code path than Bartosz's patch, and that has to be
> maintained separately.

inotifyd syntax is "inotifyd PROG FILE1[:MASK]...",
and PROG is run with

    PROG ACTUAL_EVENTS FILEn [SUBFILE]

This severely limits the number of unmodified PROGs you can run
to achieve some useful result. For example, even cat'ting newly
created files to stdout can't be done by PROG=cat, you need
to massage argv's

IOW: in practice, you always need a shim.

>> You propose to add complexity to inotifyd because it's looks "cleaner".
>> I don't see it as "cleaner", I see both ways as legitimate.
>> But your way requires additional code.
>
>  It requires additional code in inotifyd, yes. But it factorizes code
> that you would have had to run anyway, in scripting the child. It also
> allows you to make the natural assumption that a child cannot impact
> its parent (except by returning a certain exit code), which I find
> makes scripts easier to understand, so more maintainable.

Sorry, but I don't agree to this view even after you repeat it.
Here is an example where this idiom of "killing the parent"
is used already:

busybox/examples/var_service/ntpd/ntp.script
...
if test x"$1" = x"unsync"; then
        # No replies for our NTP requests were seen for some time.
        #
        # Among more mundate cases like network outages, this happens
        # if we ran for a LONG time (days) and ntp server's IP has changed.
        # ntpd has no code to re-resolve peers' addresses to IPs,
        # we need to help it:
        #
        echo "$dt: $1"\
                "syncronization lost, restarting ntpd"\
                >>"$0.log.$$"
        mv -- "$0.log.$$" "$0.log"
        kill $PPID
        exit
fi
...

Can you point me to the software you are working on so that
I can look on a wider picture of the problem you are trying to solve?
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to