Compile e rode C++ dentro do código Python

Aprenda a usar sub processos em Python


Compile e rode C++ dentro do código Python


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* .


Usando o 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:

  • Criaremos o arquivo main.py e importamos o módulo subprocess
import subprocess 
  • Agora vamos usar a função call() para compilarmos o código:
subprocess.call(["g++", "main.cpp"]) 
  • Agora vamos rodar o binário:
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 .


python cpp


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!