Array of linked lists in C
An if clause of Output is only executed once, on the very first node. You may avoid this logic altogether by making it explicit:

if (!head)
    return;
printf("%d", head-&gt;id);

for (head = head-&gt;next; head; head = head-&gt;next) {
    printf(" -&gt; %d", head-&gt;id);
}


A missing

printf("\n");


seems like a bug (I hope it is a copy-paste error).
An early return helps to avoid unnecessary variables. Consider Search:

for (int i = 0; i &lt; MAXPRI; i++)
    for (Node * aux = queue[i]; aux; aux = aux-&gt;next) {
        if (aux-&gt;id == id) {
            return i;
        }
    }
}
return -1;


A perk benefit is that now you can rename meaningless i to a more reasonable pri.

Similarly, if Execute returns as soon as a process is found, you wouldn't need bool end.
I strongly recommend to factor the

    while (aux-&gt;next != NULL) {
        aux = aux-&gt;next;
    }


loop into a function (say, get_tail), and streamline Push:

Node * node = new_node(id);
Node * tail = get_tail(pri);
if (tail) {
    tail-&gt;next = node;
} else {
    queue[pri] = node;
}

Using extra memory may significantly reduce the run time. In your case, the

struct list {
    Node * head;
    Node * tail;
};


would reduce looking for tail complexity from linear to \$O(1)\$.
linkedListArray.h shall only export the names defined in linkedListArray.c. The #include files required for linkedListArray.c compilation should be included directly in linkedListArray.c.