traced process, zombie => server jede blbe

Robert Vojta robert na v0jta.net
Čtvrtek Únor 12 11:41:05 CET 2004


> Jakym zpusobem dam v threadu nebo ve forku child-procesu, ze
> rodic-proces nevyzvedava navratovy kod??

V diteti se to nenastavuje, dela to rodic ...

a) bud nastavite, ze rodic ignoruje signal SIGCHLD, tj.

   signal(SIGCHLD, SIG_IGN);

   SIGCHLD = SIGCLD

b) nebo budete v handleru odchytavat signaly, ted tu nic nemam ale
   v rychlosti jsem vygoogloval priklad ...

void sig_chld(int signo) 
{
    int status, wpid, child_val;

    printf ("SIGCHLD: In sig_chld signal handler.");

    /* Wait for any child without blocking */
    wpid = waitpid (-1, & status, WNOHANG);
    printf ("SIGCHLD:	Waitpid found status for pid: %d", wpid);
    printf("SIGCHLD:	Waitpid status: %d", status);

    if (WIFEXITED(status)) /* did child exit normally? */
    {
        child_val = WEXITSTATUS(status); 
        printf("SIGCHLD: child exited normally with status %d", child_val);
    }
    printf ("SIGCHLD: End of sig_chld.");
}

   ... samozrejme musite nastavit void sig_chld(int) jako handler
 k SIGC[H]LD.

-- 
Robert Vojta


Další informace o konferenci Linux