Пример #1
0
int main()
{
    printf("Program begins here!\n");
    printParent();

    pid_t pid1, pid2, pid3;
    int a = 2, b = 2, c = 2, d = 2, e = 2, f = 2;
    int result, rtval1, rtval2, rtval3;

    pid1 = fork();

    if(pid1 == 0)
    {
        printChild();
        return add(a, b);
    }
    else
    {
        printf("I just finished forking pid1.\n");
        waitpid(-1, &rtval1, 0);
        rtval1 = WEXITSTATUS(rtval1);
        printParent();

        pid2 = fork();
        if(pid2 == 0)
        {
            printChild();
            return add(c, b);    
        }
        else
        {
            printf("I just finished forking pid2.\n");
            waitpid(-1, &rtval2, 0);
            rtval2 = WEXITSTATUS(rtval2);
            printParent();

            pid3 = fork();
            if(pid3 == 0)
            {
                printChild();
                return divi(e, f);
            }
            else
            {
                printf("I just finished forking pid3.\n");
                waitpid(-1, &rtval3, 0);
                rtval3 = WEXITSTATUS(rtval3);
                printParent();
            }
        }
    }
    result = (rtval1 * rtval2) - rtval3;
    //printf("%d, %d, %d\n", rtval1, rtval2, rtval3);  // debug
    printf("The result of doing (%d + %d) * (%d + %d) - (%d / %d) is: %d\n", a, b, c, d, e, f, result);
    return 0;
}
Пример #2
0
int main(int argc, char **argv)
{
    const char *name = "input.txt";
    if (argc == 2)
        name = argv[1];
    struct node *head = NULL;
    FILE *file = fopen(name, "r");
    if (file == 0)
    {
        fprintf(stderr, "%s: failed to open file %s for reading\n", argv[0], name);
        return 1;
    }
    printf("File: %s\n", name);
    int stdID, grade;
    while (fscanf(file, "%d %d", &stdID, &grade) == 2)
    {
        if (stdID == -1 && grade == -1)
            break;
        printf("Read: %d %d\n", stdID, grade);
        head = insertNode(head, stdID, grade);
        //printf("Tree:\n");
        //printTree(head);
    }
    fclose(file);

    printf("Completed tree:\n");
    printTree(head);
    printf("\n");

    printf("%3d %3d\n", head->ID, head->Grade);
    printf("Parent tree:\n");
    printParent(head);
    printf("\n");

    return 0;
}