No Linux, um novo processo é criado via fork()
, o que torna um processo filho quase idêntico para o processo pai. Para criar um novo processo cujo programa é diferente do que o programa do processo original, o novo processo filho chama imediatamente execve()
, que é basicamente o processo que diz "substitua meu programa atual por outro programa". .
brk(NULL)
é o processo perguntando onde está memória de heap termina. Muitos programas chamam isso como sua primeira chamada de sistema (que será exibida logo após execve()
) porque eles usam malloc()
imediatamente (ou uma chamada de biblioteca que usam usa malloc()
internamente). Se o programa e suas chamadas de biblioteca não precisarem chamar malloc()
por algum tempo, algo além de brk(NULL)
será a segunda chamada de sistema.