Eu entendo que enquanto exec () não retorna depois de ser executado no Unix, system () pode ou pode não retorna dependendo da situação. Mas alguém pode explicar por que a chamada de sistema exec () não retorna e também as diferenças entre exec () e system () no sistema operacional Unix

Comentários

  • Observe que system(3) não é uma chamada do sistema, é ' uma função de biblioteca que cria alguns chamadas de sistema.
  • system() sempre retorna.

Resposta

system () é equivalente a fork () + exec () + wait (); isso significa que quando um processo executa a função system (), ele cria um novo processo e espera o final desse processo. O novo processo executa o comando em seu próprio ambiente, ao terminar o chamador recebe o sinal filho.

Para maiores informações man exec man system

“exec substitui a imagem do processo atual por uma nova imagem do processo”, isso significa que quando sai, o chamador também sai, pois o chamador se tornou o novo processo.

Comentários

  • Há ' um pouco mais do que isso. system() realmente exec() s seu shell padrão e passa a string para que ele processe, para que você possa, por exemplo, usar um pipeline e outros recursos de shell.

Resposta

Esta é uma chamada de sistema no sistema operacional Unix que substitui o processo atualmente em execução por uma informação do programa binário.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *