Changeset 1722


Ignore:
Timestamp:
Dec 9, 2004, 9:16:59 AM (21 years ago)
Author:
bird
Message:

Bugfixing.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/emx/testcase/misc/waitpid-1.c

    • Property cvs2svn:cvs-rev changed from 1.1 to 1.2
    r1721 r1722  
    6565        else if (pid == g_pid128)
    6666            rcWanted = W_EXITCODE(128, 0);
    67         else if (pid == g_pid1)
     67        else if (pid == g_pidKill)
    6868            rcWanted = W_EXITCODE(0, SIGKILL);
    6969        else
     
    8787    if (argc == 2)
    8888    {
    89         if (strcmp(argv[1], "child-1"))
     89        usleep(1000);
     90        if (!strcmp(argv[1], "child-1"))
    9091            return 1;
    91         if (strcmp(argv[1], "child-64"))
     92        if (!strcmp(argv[1], "child-64"))
    9293            return 64;
    93         if (strcmp(argv[1], "child-128"))
     94        if (!strcmp(argv[1], "child-128"))
    9495            return 128;
    95         if (strcmp(argv[1], "child-kill"))
     96        if (!strcmp(argv[1], "child-kill"))
    9697            sleep(24*60*60);
    9798        return 0;
     
    111112     * spawn children.
    112113     */
     114    sighold(SIGCHLD);
    113115    g_pid0 = spawnl(P_NOWAIT, argv[0], argv[0], "child", NULL);
    114116    g_pid1 = spawnl(P_NOWAIT, argv[0], argv[0], "child-1", NULL);
     
    116118    g_pid128 = spawnl(P_NOWAIT, argv[0], argv[0], "child-128", NULL);
    117119    g_pidKill = spawnl(P_NOWAIT, argv[0], argv[0], "child-kill", NULL);
    118 
    119120    int cSpawned = (g_pid0 > 0)
    120121                 + (g_pid1 > 0)
     
    122123                 + (g_pid128 > 0)
    123124                 + (g_pidKill > 0);
     125    printf("waitpid-1: info - pid0=%#x pid1=%#x pid64=%#x pid128=%#x pidKill=%#x\n", g_pid0, g_pid1, g_pid64, g_pid128, g_pidKill);
     126    if (cSpawned != 5)
     127    {
     128        printf("waitpid-1: ERROR - one or more spawns failed. cSpawned=%d should be 5!\n", cSpawned);
     129        g_cErrors++;
     130    }
     131    sigrelse(SIGCHLD);
     132
    124133    int cWaits = 0;
    125134    while (g_cReaped < cSpawned && cWaits++ < 30)
    126         sleep(1);
     135    {
     136        if (cWaits == 1 && g_cReaped + 1 == cSpawned)
     137            kill(g_pidKill, SIGKILL);
     138        else
     139        {
     140            sleep(1);
     141            kill(g_pidKill, SIGKILL);
     142        }
     143    }
    127144
    128145    if (g_cReaped != cSpawned)
Note: See TracChangeset for help on using the changeset viewer.