Uma programação bem interessante é a criação de processos, que pode ser facilmente desenvolvida na linguagem C em sistemas unix-like.
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc,char *argv[]){
pid_t fork1;
int pid_filho,pid_pai,status,i;
printf("PAI: Meu pid é: %d não tenho filhos - execute $ps -ef para ver meu PID\n",(int)getpid()); printf("PAI: - tecle ENTER para continuar\n");
getchar();
fork1 = fork();
if(fork1 == -1){
perror("Falha na criação do filho");
_exit(-1);}
else if(fork1 == 0){ //area do filho
pid_filho = getpid();
pid_pai = getppid();
printf("FILHO: Eu sou o filho e meu pid é: %d \n",pid_filho);
printf("FILHO: Meu processo pai é: %d \n",pid_pai);
printf("FILHO: Minha tarefa é repetir bom dia 5 vezes\n");
for(i=1;i<=5;i++){
sleep(1);
printf("FILHO: Bom dia nº %d!\n",i);}
printf("FILHO: encerrei minha atividade - tecle ENTER para continuar\n");
getchar();
_exit(0);}
else { //area do pai
wait(&status);
printf("PAI: Meu pid é: %d \n",(int)getpid());
printf("PAI: Criei um filho com PID: %d \n", (int)pid_filho);
printf("PAI: Minha tarefa dizer boa noite 2 vezes\n");
for(i=1;i<=2;i++){
sleep(1);
printf("PAI: Boa noite nº %d!\n",i);}
printf("PAI: Finalizei - tecle ENTER para continuar\n");
getchar();
_exit(0);}
No código acima, o processo PAI cria um processo FILHO que executa uma ação qualquer e retorna para o PAI. Neste programa podemos observar a técnica de programação envolvida na criação de processos.
Uma vez em execução, podemos acompanhar a criação e o encerramento dos processos pelo comando pstree, visto anteriormente.