why is it that in run_make_zero, the ^^^^^^ is never printed, is it possible that other processes run first and that execvp causes them to terminate or what,
void run_make_zero(char *target, Rule *rules) {
    printf("***********\n");
    int x = 0;

    Rule *p = finds_rule(rules, target);
    if (p == NULL) {
        p = rules;
    }
    Dependency *ptr = p->dependencies;
    if (ptr == NULL) {
        return;
    }
    printf("***********\n");

    while (ptr != NULL) {
        run_make_zero(ptr->rule->target, rules);
        printf("&&&&&&&&&&\n");

        x = check_time(p->target, ptr->rule->target);
        ptr = ptr->next_dep;
    }
    printf("$$$$$$$$$\n");
    printf("%d\n\n\n", x);
    if (x == 1) {
        Action *act_ptr = p->actions;
        int status;
        printf("@@@@@@@@\n");

        while (act_ptr != NULL) {
            int n = fork();
            if (n == 0) {
                char *buffer = malloc(sizeof(char) * MAXLINE);
                buffer = args_to_string(act_ptr->args, buffer, get_size(act_ptr->args));
                printf("%s\n", buffer);
                printf("^^^^^^^^^^^^\n");
                waitpid(n, &status, 0);
                execvp(act_ptr->args[0], act_ptr->args);
                perror("execvp");
                exit(1);
            }
            waitpid(n, &status, 0);
            if (WIFEXITED(status)) {
                int childstatus = WEXITSTATUS(status);
                if (childstatus != 0) {
                    exit(childstatus);
                }
            }
            act_ptr = act_ptr->next_act;
        }
    }
}

void run_make(char *target, Rule *rules, int pflag) {
    if (pflag == 0) {
        run_make_zero(target, rules);
    }