Como obter sinalizadores de linha de comando ou opções em um programa de comando executável

0

Eu fiz um programa C ++ que gera uma nova senha toda vez que eu a executo, ela me pede o tamanho da senha e então gera uma nova senha pseudo-aleatória.

Eu adicionarei seu diretório à variável de ambiente PATH para que eu possa executá-lo em qualquer diretório.

Eu quero saber como posso modificar o executável para obter os argumentos da linha de comando, para que eu possa invocá-lo do terminal da seguinte maneira:

newpass -10
ou newpass 10

Ambos gerariam uma senha de 10 caracteres. Atualmente tenho meu programa como um arquivo de objeto que eu tenho que executar como:

./newpass

    
por Randy 20.10.2017 / 22:51

2 respostas

1

Getopt é um pouco exagerado para obter apenas um argumento de linha de comando. Se o seu programa exigir mais opções e argumentos posteriormente, você poderá considerar algo semelhante a getopt . Para uma maneira mais orientada para C ++ de analisar linhas de comando mais complicadas, talvez você queira dar uma olhada no Biblioteca Boost Program Options . A maioria das linguagens (Java, Perl, Python, C, C ++, Pascal, etc etc) tem uma biblioteca de funções ou instruções que retornam os argumentos da linha de comando.

Em C ou C ++, você pode simplesmente converter o primeiro argumento "10" ou o que for, para um inteiro. Todos os argumentos da linha de comando são strings ( char arrays terminados com um byte zero).

Algo parecido com isto:

  1. Adicione o código ao seu programa principal para verificar o argumento da linha de comando, algo como:

    int pwlength(10); // or whatever the default if (argc > 1) { // put code here to convert the string in argv[0] to an integer // and store in pwlength. // If the string cannot be converted, // Print an error message and exit the program with // the statement "return 1;" or "exit(1);" which // notifies the caller of the executable that an error occurred. } std::cout << "Your password length will be: " << pwlength << std::endl;

  2. Adicione o diretório onde o arquivo newpass é armazenado na sua variável PATH , por exemplo, assumindo que newpass está localizado no diretório $HOME/bin :
    PATH="$PATH:$HOME/bin"

  3. Altere os modos de arquivo do arquivo newpass com chmod :% chmod +x newpass

por 20.10.2017 / 23:53
-1

Sem vergonha copiada daqui: Como posso fazer um programa executável de qualquer lugar

"Se você apenas digitar export PATH=$PATH:</path/to/file> na linha de comando, ela durará apenas a duração da sessão.

Se você quiser alterá-lo permanentemente adicione export PATH=$PATH:</path/to/file> ao seu arquivo ~ / .bashrc (apenas no final é bom). "-oadams

    
por 20.10.2017 / 22:53