• E
    virFork: give specific status on failure prior to exec · 631923e7
    Eric Blake 提交于
    When a child fails without exec'ing, we want a well-known status;
    best is to match what env(1), nice(1), su(1), and other wrapper
    programs do.  This patch adds enum values that later patches will
    use, and sets up virFork as the first client of EXIT_CANCELED
    for errors detected prior to even attempting exec, as well as
    virExec to distinguish between a missing executable vs. a binary
    that cannot be executed.
    
    This is a slight semantic change in the unlikely case of a child
    process failing to restore its signal mask - we now kill the
    child with a known status instead of relying on the caller to
    notice and do an appropriate _exit().  A subsequent patch will
    make further cleanups based on an audit of all callers.
    
    * src/internal.h (EXIT_CANCELED, EXIT_CANNOT_INVOKE)
    (EXIT_ENOENT): New enum.
    * src/util/vircommand.c (virFork): Document specific exit value if
    child aborts early.
    (virExec): Distinguish between various exec failures.
    * tests/commandtest.c (test1): Enhance test.
    (test22): New test.
    Signed-off-by: NEric Blake <eblake@redhat.com>
    631923e7
vircommand.c 72.5 KB