• D
    osdep: add qemu_fork() wrapper for safely handling signals · 57cb38b3
    Daniel P. Berrange 提交于
    When using regular fork() the child process of course inherits
    all the parents' signal handlers. If the child then proceeds
    to close() any open file descriptors, it may break some of those
    registered signal handlers. The child generally does not want to
    ever run any of the signal handlers that the parent may have
    installed in the short time before it exec's. The parent may also
    have blocked various signals which the child process will want
    enabled.
    
    This introduces a wrapper qemu_fork() that takes care to sanitize
    signal handling across fork. Before forking it blocks all signals
    in the parent thread. After fork returns, the parent unblocks the
    signals and carries on as usual. The child, however, resets all the
    signal handlers back to their defaults before it unblocks signals.
    The child process can now exec the binary in a "clean" signal
    environment.
    Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
    57cb38b3
oslib-win32.c 14.1 KB