Executando Command Line em C++ com system()

117 Просмотры
Издатель
"#aiedonline em youtube.com/c/aiedonline"
Executando Command Line em C++ com system()
Todo o material de minhas aulas estão aqui: https://youtu.be/jSsJmD4I3Nw
Apostila gratuita de Redes: https://docs.google.com/document/d/14S8MAcjspdbBWsja-Ijb_GQfs4C1PzJmDcTJ3bYXyeQ/edit?usp=sharing
TELEGRAM: https://t.me/joinchat/Plabo1TylY2GEPJQ1eJ9IQ
GIT: https://github.com/aiedonline/ccpp

6.6.3 Executando comandos de Shell com system() popen() e exec()
A chamada system() executa um comando shell do sistema operacional conforme descrito por uma string contendo o comando literal. Esta função é implementada usando fork(), exec() e waitpid().

A string de comando é executada chamando /bin/sh -c COMANDO_NA_STRING, e durante a execução do comando, SIGCHLD será bloqueado e SIGINT e SIGQUIT serão ignorados. A chamada "bloqueia" e espera que a tarefa seja executada antes de continuar.

Para compilar utilize o comando abaixo (tem que existir um diretório chamado dist no mesmo diretório do arquivo .cpp).

A chamada popen() abre um processo criando e cria um pipe de comunicação (um arquivo tipo s dentro do sistema operacional), o fork() invoca o shell. A vantagem de usar popen() é que permitirá obter o output do comando executado.

Este exemplo abre um pipe que executa o comando shell "ls -l" e os resultados são lidos e impressos pelo processo pai.

r: Para ter acesso ao stdin
w: Para ter acesso ao stdout

Para ter acesso ao stderr adicione no comando conforme Para compilar utilize o comando abaixo (tem que existir um diretório chamado dist no mesmo diretório do arquivo .cpp).

O comando exec() e execve() iniciarão um programa de dentro de um programa, eles também possuem várias funções front-end para execve(). A rotina execlp() executará a mesma finalidade, exceto que usará a variável de ambiente PATH para determinar qual executável processar.


#threads, #argv, #argc, #parametros, #cpp, #g++, #c++, #c, #compilar, #Linux, #GNU, #Impacta, #Faculdade, #Universidade, #CiênciaComputação, #ADS, #Tecnologia, #Hospedagem, #Bicoin, #Ubuntu, #KaliLinux, #mintLinux, #diolinux, #bosontreinamentos
Категория
Язык программирования C++
Комментариев нет.