signal(SIGCHLD,SIG_DFL) before exec()

Ilya Basin basinilya at gmail.com
Wed May 4 04:02:23 CDT 2011


Hi list. I suffer from this bug: http://bugs.winehq.org/show_bug.cgi?id=27014
In wine sources there're not so many places where exec(3) family is
used. In some places SIGCHLD and SIGPIPE are restored to default
before calling exec(), in others they aren't. What's the difference?

Can anyone explain me the why SIGCHLD not restored to default
before calling execvp() here:
http://source.winehq.org/source/libs/port/spawn.c?v=wine-1.3.19#L42
    int spawnvp(int mode, const char *cmdname, const char *const argv[])
    {
    ...
         if (mode == _P_OVERLAY)
         {
             execvp(cmdname, (char **)argv);
             /* if we get here it failed */
     #ifdef ENOTSUP
             if (errno != ENOTSUP)  /* exec fails on MacOS if the process has multiple threads */
     #endif
                 return -1;
         }

Because it's not forked and if execvp() fails, we end up with the
default handler?




More information about the wine-devel mailing list