Por que usar o comando './myFile a' 'a' é interpretado como um parâmetro de entrada?

0

Depois de compilar um programa com g++ -o myFile myFile.cpp usei ./myFile & para executar o programa.

Ao usar o E comercial, eu entendo que o programa está sendo executado em segundo plano.

Alguém pode me direcionar para o link correto explicando o que ./myFile a significa? Eu não entendo porque usar o comando a é interpretado como um parâmetro de entrada.

    
por ep7network 07.02.2016 / 16:40

2 respostas

6

Relendo sua pergunta novamente Acho que entendi o que você está perguntando.

Tudo o que você digitar no prompt de comando é interpretado por um shell subjacente (se você não alterou, Bash).

Há várias etapas que o Bash realiza antes de executar o comando:

% bl0ck_qu0te%

Tudo o que for deixado à direita do comando delimitado por qualquer sequência dos separadores contidos em $IFS , geralmente , \t e \n depois que o Bash passou pelas etapas descritas acima, é interpretado como um argumento para o programa: sem ser técnico, isso significa que cada token é disponibilizado para o programa, que pode utilizá-lo da maneira que quiser.

Mais especificamente, o que acontece sob o capô é que cada token é passado como um argumento para o execve() syscall que inicia o programa e se torna disponível para o programa por meio de argv (um ponteiro para um ponteiro para um caractere frequentemente incluído na declaração / definição de main() ), que o programa pode acessar para recuperar os argumentos.

    
por kos 07.02.2016 / 17:19
3

O shell processa os parâmetros.

Isso impedirá que o shell faça isso:

./myFile '&'

Assim, o programa receberá & amp; como um parâmetro.

Outro exemplo:

./myFile *

Ele expandirá a estrela para uma lista completa de parâmetros - os nomes dos arquivos no diretório atual.

    
por Velkan 07.02.2016 / 16:46