c shell system programming tutorial with examples
Este tutorial fornece um relato detalhado da chamada C ++ Shell ou system () que é usada para invocar o comando do sistema operacional a partir de um programa C ++.
No mundo da programação de software, a maioria das APIs do sistema operacional é voltada para C. A linguagem C ++ fornece suporte direto para chamar funções C a partir do código C ++.
Portanto, neste caso, C ++ também se torna uma linguagem de programação do sistema. C ++ fornece um comando “system ()” para invocar os comandos do sistema operacional do programa C / C ++.
Em outras palavras, podemos dizer que o comando system () executa um comando shell C ++. Neste tutorial, discutiremos a execução do comando shell ou system () em detalhes.
=> Explore a série de treinamento simples em C ++ aqui.
O que você aprenderá:
- Chamadas de sistema C ++
- Pausa do sistema C ++
- Funções de biblioteca do sistema vs.
- Conclusão
- Leitura recomendada
Chamadas de sistema C ++
Agora vamos discutir a chamada do sistema e seus detalhes com exemplos.
Protótipo de função: sistema interno (comando const char *);
Parâmetros:
comando => Uma string C contendo o comando a ser executado.
Se um ponteiro nulo for passado, apenas uma verificação do processador de comando será feita.
Valor de retorno: Retorna um valor int. O valor retornado depende se a string de estilo C é especificada como um argumento ou se um ponteiro nulo é especificado.
- Ponteiro Nulo => Se o ponteiro nulo for especificado, ele retornará um valor diferente de zero se o processador de comando estiver disponível e zero caso contrário.
- O comando especificado => Quando o comando é especificado, o código de status geralmente é retornado, mas o valor retornado depende do sistema e da implementação da biblioteca.
Descrição: O comando do sistema executa um comando fornecido como argumento. O valor retornado pela execução do comando geralmente depende da implementação do sistema e da biblioteca. Se um ponteiro nulo é passado em vez de um comando, esta chamada simplesmente verifica se o processador do comando está disponível ou não.
A chamada retorna um valor diferente de zero se o processador de comando estiver disponível e zero caso contrário.
Usando system (), podemos executar quase qualquer comando, desde que o sistema operacional permita. Por exemplo, podemos executar o sistema (“dir”) ou o sistema (“ls”) com a mesma facilidade. Na verdade, podemos até invocar o compilador GCC de nosso programa.
Listados abaixo estão alguns exemplos de comandos do sistema usados em C ++ para executar os comandos do shell C ++.
Exemplo 1:
Este exemplo mostra a demonstração do comando do sistema com um ponteiro nulo como argumento.
#include #include using namespace std; int main () { int i; cout<< 'Check if command processor is available...'< Resultado:

No programa acima, primeiro verificamos se o processador de comando está disponível passando null para a chamada do sistema. Se o processador de comandos estiver disponível, executamos o comando dir. Se o processador de comandos não estiver disponível, encerramos o programa com uma falha.
Exemplo 2:
O exemplo abaixo mostra a execução do comando ls em que a saída é canalizada para um arquivo de texto “output.txt”. Depois que a chamada system () é executada, imprimimos o conteúdo do output.txt.
como encontrar a chave de segurança de rede para wi-fi
#include #include #include int main() { std::system('ls -l >output.txt'); // execute the UNIX command 'ls -l >test.txt' std::cout << std::ifstream('output.txt').rdbuf(); }
Resultado:

A saída do programa acima é o conteúdo do arquivo “output.txt”, que nada mais é do que a saída do comando ls.
Exemplo 3:
O programa C ++ abaixo é a continuação do exemplo anterior. Aqui, executamos o comando ls que é redirecionado para output.txt usando uma chamada de sistema. Em seguida, executamos outra chamada de sistema com o comando “rm” (remover) para remover o arquivo output.txt.
Depois disso, executamos novamente o comando ls e, desta vez, redirecionamos a saída para outro arquivo, ou seja, text.txt. Finalmente, imprimimos o conteúdo do arquivo text.txt.
#include #include #include using namespace std; int main() { // execute the UNIX command 'ls -l >output.txt' system('ls -l >output.txt'); cout << ifstream('output.txt').rdbuf(); // execute the UNIX command 'rm output.txt' system('rm output.txt'); cout<<'removed output.txt'<text.txt' cout<<'ls after removing output.txt & creating text.txt'<text.txt'); cout << ifstream('text.txt').rdbuf(); }
Resultado:

Pausa do sistema C ++
O comando do sistema (“pausa”) interrompe temporariamente as operações quando executado. A chamada do sistema (“pausa”) depende do sistema operacional e executa as seguintes etapas:
- Essa chamada suspende o programa temporariamente e também sinaliza ao sistema operacional para abrir o shell do sistema operacional.
- O sistema operacional aloca a memória para a execução do comando.
- Em seguida, ele desaloca a memória, sai do sistema operacional e retoma o programa suspenso.
O programa a seguir mostra um exemplo de uma chamada do sistema (“pausa”).
#include #include using namespace std; int main () { cout << 'Hello World!' << endl; system('pause'); return 0; }
Resultado:

Como já mencionado, a chamada do sistema (“pausa”) é muito lenta e depende do sistema operacional. As etapas mencionadas acima são difíceis de executar.
Além disso, as chamadas de sistema também podem representar alguns riscos de segurança. Portanto, geralmente não contamos com as chamadas do sistema (“pausa”) em nossos programas.
Em vez disso, podemos usar cin.get para obter a mesma funcionalidade de um sistema (“pausa”), conforme mostrado no programa abaixo.
#include #include using namespace std; int main () { cout << 'This is SoftwareTestingHelp.com' << endl; cin.get(); // same as getchar() return 0; }
Resultado:

Conforme mostrado acima, podemos usar cin.get para pausar a saída até pressionarmos alguma tecla. Ao contrário do sistema (“pausa”) não depende do sistema operacional. Também não segue os passos executados ao executar o sistema (“pausa”).
Funções de biblioteca do sistema vs.
As chamadas do sistema dependem do sistema operacional. Eles também são muito lentos e com muitos recursos. As funções da biblioteca não dependem do sistema operacional. Eles são mais rápidos e não consomem muitos recursos ou memória.
Os usos mais comuns de chamadas do sistema são para comandos do sistema (“pause”) e do sistema (“cls”). As funções de biblioteca são funções integradas que contêm funções relacionadas a matemática, E / S de arquivo, etc.
Conclusão
Neste tutorial do Shell C ++, discutimos várias funções do sistema. Vimos exemplos de passagem de um ponteiro nulo para o comando do sistema que verifica se o processador do comando está disponível ou não. Também discutimos o comando do sistema (“pausa”) e suas alternativas em detalhes.
=> Verifique TODOS os tutoriais em C ++ aqui.
Leitura recomendada
- Classificação Shell em C ++ com exemplos
- Tutorial de script de shell Unix com exemplos
- Tipos de Loop Unix Shell: Do While Loop, For Loop, Até Loop no Unix
- Exemplos de operadores booleanos e aritméticos do Unix Shell Script
- Funções Unix Shell Script com Parâmetros e Retorno
- Scripting Unix Shell Avançado: Arrays, Operadores de Teste de Arquivo e String, Variáveis Especiais
- Tutorial de regex C ++: expressões regulares em C ++ com exemplos