Cadê as funções “spawn” que tavam aqui?!

Admito! Eu vim do “mundo” DOS/Windows… Minha tara pelo Unix é recente, tem alguns anos. E como todo programador em ambiente Windows, fiquei acostumado com certas “facilidades”.

Há algum tempo meu amigo MaRZ, coautor desse blog, me deu uma dica valiosa sobre a função fork(), dizendo que todos os processos são “forkados”, no Unix… Achei interessante, mas meio irrelevante para minhas necessidades imediatas. Só que eu sempre senti falta das funções “spawn”, em process.h (que não existem no Unix, nem as funções, nem o header file). As funções “exec” estão em unistd.h, mas elas não me atendiam…

Em resumo, “exec” carrega um binário, executável, e “mata” o processo corrente (na verdade, no Unix, substitui o processo corrente). Eu queria executar um processo filho diferente, mantendo o pai. Eis a importância do fork!

No Unix você “forka” o processo atual e, no processo filho, executa “exec”, substituindo-o. Fácil assim:

...
pid = fork();
if (pid == 0)
{
  execl("/home/myname/process2", "process2", NULL);
}
...

As funções “spawn” são absolutamente desnecessárias!

PS: Recomendo a leitura de “UNIX Network Programming – The sockets API”…

Anúncios

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s