question

como executar um programa usando a chamada de sistema execl?

Estou a tentar executar um programa usando a chamada de sistema execl. Primeiro eu usei garfo para criar um processo filho que chama a chamada de sistema execl assim
Execl("/usr/share/applications/Calculator","/usr/share/applications/Calculator",(Char)0)
Mas o processo filho não vai ser substituído pelo novo um por favor me ajude!
resposta Resposta
Quando você usar o shell para executar um comando (ls, dizer), então em algum ponto, o shell irá executar uma chamada Fork () para obter um novo processo de execução. Tendo feito isso, como é que o shell então obter ls para executar o processo de criança em vez da cópia duplicada do invólucro, que é o que será executado imediatamente após a chamada Fork ()?

Neste caso, a solução é usar uma chamada de sistema exec (). Na verdade, existem vários sabores diferentes da chamada exec (), mas todos eles executarem essencialmente a mesma tarefa. Uso da chamada de sistema exec () é a única maneira de obter um programa executado no Linux. A maneira que ele faz isso é substituir os segmentos de dados de texto e usuário do processo que executa a chamada exec () com os dados de usuário e o texto contidos no arquivo de programa, cujo nome é passado como um parâmetro para exec (). Isso é provavelmente melhor ilustrado com um exemplo simples.

Antes de fazermos isso, no entanto, preciso divagar um pouco para explicar um pouco mais sobre exec (). Quando você executar um programa do shell, você viu que é possível especificar parâmetros e opções para o programa na linha de comando. De seu conhecimento de C, você também sabe que esses valores de linha de comando são disponibilizadas para um programa através de parâmetros argc e argv para Main (). De alguma forma o shell deve ser capaz de levar seus valores de linha de comando e passá-los para os programas que ele é executado em seu nome como seu argc e argv. Isso é feito passando seus valores de linha de comando em um formulário apropriado para exec () que providenciará para que eles apareçam como argc e argv para o novo programa para ser executado.

ComentáriosComentários
Acho que a resposta não está correta ou que você gostaria de acrescentar mais
alguma informação? Envie o seu comentário abaixo..

Guest


HTML não é permitido!

Image Code

Digite os caracteres que aparecem na imagem por isso sabemos que você é humano!

Receber um email quando alguém acrescenta outro comentário a esta pergunta


Topo da página


Home  Terms
Copyright © Accelerated Ideas 2005-2024
All rights reserved