Um pouco confuso. fork
é uma chamada de sistema que cria um novo processo copiando a imagem do processo pai. Depois disso, se o processo filho quiser ser outro programa, ele chamará algumas das chamadas do sistema exec
family, como execl
. Se, por exemplo, você deseja executar ls
no shell, o shell bifurca o novo processo filho, que chama execl("/bin/ls")
.
Se você ver dois programas e seus pid
são diferentes, verifique seus ppid
(ids pai). Por exemplo, se p1
for ppid
do processo cujo pid
é p2
, isso significa que o processo cujo id é p1
bifurcou esse processo. Mas se o primeiro processo ' ppid
não for o mesmo que o outro processo' pid
, significa que o mesmo comando é executado duas vezes.
Se pid
e ppid
forem iguais, mas tid
(id de thread) forem diferentes, significa que é um processo com 2 threads.
Acho que criar seu próprio shell é um bom ponto de partida.