Vamos dividir as diferenças entre `Execl` e` System` no Unix:  
 `Execl` (e suas variantes)    * 
 Objetivo: `Execl` substitui o processo atual por um novo. Ele carrega e executa diretamente o programa especificado, encerrando efetivamente o programa original. 
 * 
 como funciona:  * 
 Substituição: O processo de chamada é substituído pelo novo processo. Isso significa que não há retorno ao programa original. 
 * 
 argumentos: `Execl` pega o nome do arquivo executável e uma lista de argumentos como parâmetros. Ele não tem a capacidade de lidar com o redirecionamento padrão de entrada/saída. 
 * 
 Exemplo:  `` `c 
 #include 
 
 #include  
 
 int main () { 
 execl ("/bin/ls", "ls", "-l", nulo); // Substitua o processo atual por 'ls -l' 
 // Esta linha não será alcançada 
 retornar 0; 
 } 
 `` ` 
 
  `System`  
 
 *  Objetivo: `System` Executa um comando como um processo separado. Ele permite executar comandos de shell do seu programa C. 
 *  como funciona: 
 *  garfo e executivo: `System` usa` fork` para criar um processo filho. Este processo infantil executa o comando usando `Execl`. 
 *  Processos separados: O processo original e o comando recém -executado são executados em processos separados. Isso significa que o processo original pode continuar após o término do comando. 
 *  Entrada/saída: A função `System` fornece uma maneira de gerenciar a entrada, saída e redirecionamento de erros padrão através do shell. 
 *  Exemplo: 
 `` `c 
 #include  
 
 int main () { 
 sistema ("ls -l"); // executar 'ls -l' como um processo separado 
 retornar 0; 
 } 
 `` ` 
 
  Diferenças -chave  
 
 *  Substituição do processo: `Execl` substitui o processo atual, enquanto o` System` cria um novo processo. 
 *  retornar: `Execl` não retorna ao programa de chamada, enquanto o` System 'retorna após o término do comando executado. 
 *  Integração do shell: `System` fornece acesso aos recursos do shell para redirecionamento e tubos de comando, enquanto o` Execl` executa diretamente um programa. 
 
  Quando usar cada função  
 
 *  `Execl`: Use `Execl` quando deseja substituir completamente o processo atual por outro programa. É adequado para casos em que o programa de chamada não precisa continuar após o início do novo programa. 
 *  `System`: Use `System` quando deseja executar um comando como um processo separado e retenha o controle sobre o programa original. É adequado para cenários em que você precisa executar comandos de shell ou redirecionar a entrada/saída. 
 
  Notas adicionais  
 
 * Existem outras variantes de `Execl`:` Execv`, `Execlp`,` Execvp`, etc., que diferem na maneira como lidam com argumentos e caminhos de pesquisa. 
 * Ambos `Execl` e` System` têm implicações de segurança. Se você estiver passando por uma entrada fornecida pelo usuário para essas funções, certifique-se de higienizá-lo para evitar possíveis ataques de injeção de código.