O módulo subprocess
permite gerar novos processos, conectar-se aos seus pipes de entrada/saída/erro e obter seus códigos de retorno. Este módulo pretende substituir vários módulos e funções mais antigas, tais como: os.system
e os.spawn*
.
subprocess
para compilar e rodar código C++Nese caso, vamos usar métodos mais antigos por questões de compatibilidade, algumas funções só estão disponíveis a partir do Python 3.5, por exemplo a função run()
.
Suponhamos que você possua esse código exemplo em C++
main.cpp
#include <iostream>
#include <vector>
class Code {
std::string m_first{};
std::string m_last{};
int m_sid{};
int m_month{};
public:
Code(){}
Code(std::string first,std::string last,int sid,int month)
: m_first(first)
, m_last(last)
, m_sid(sid)
, m_month(month) {
}
void show(){
std::cout << m_first << " "
<< m_last << " "
<< m_sid << " "
<< m_month << '\n';
}
};
int main( int argc , char **argv ){
std::vector<Code> codes;
Code code1("Marcos", "Oliveira", 2022, 01);
Code code2("Bjarne", "Stroustroup", 1979, 04);
codes.push_back(code1);
codes.push_back(code2);
for( Code c : codes){
c.show();
}
return EXIT_SUCCESS;
}
Ele exibe somente dados de cadastrados.
Agora vamos compilar e rodar o código via Python:
main.py
e importamos o módulo subprocess
import subprocess
call()
para compilarmos o código:subprocess.call(["g++", "main.cpp"])
subprocess.call("./a.out")
O código completo seria de 3 básicas linhas:
import subprocess
subprocess.call(["g++", "main.cpp"])
subprocess.call("./a.out")
Agora rode:
python main.py
E vai parecer que o código C++ rodou em tempo de execução.
Agora você percebeu que C++ foi só um exemplo e que o subprocess
você pode usar para outras linguagens e situações também, né?!
Para mais informações acesse: https://docs.python.org/3/library/subprocess.html .