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; }
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; }