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
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()
realmenteexec()
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.
system(3)
não é uma chamada do sistema, é ' uma função de biblioteca que cria alguns chamadas de sistema.system()
sempre retorna.