블로그 (Blog)/개발로그 (Devlogs)
subprocess for C++
ihmin
2024. 6. 20. 01:09
Python의 subprocess 는 외부 파일을 실행할 때 참 편리한 기능을 제공하는 클래스인데..
C++ 용으로 subprocess 와 비슷한 기능을 구현한 클래스가 있어서 테스트해보니.. 참 괜찮음..
https://github.com/benman64/subprocess
#include <subprocess.hpp>
....
int RunProgram2(std::string programPath, std::vector<std::string> args, std::string &output)
{
std::vector<std::string> tokens;
tokens.push_back(programPath);
for(std::string &s: args) {
tokens.push_back(s);
}
// 콘솔 화면을 감춤
#ifdef __MINGW32__
AllocConsole();
ShowWindow(GetConsoleWindow(), SW_HIDE);
#endif
auto completed = subprocess::RunBuilder(tokens)
.cout(subprocess::PipeOption::pipe)
.cerr(subprocess::PipeOption::pipe)
.env(subprocess::current_env_copy())
.run();
#if 0
std::string joined = boost::algorithm::join(completed.args, " ");
qDebug() << "args:" << joined.c_str();
#endif
int exit_code = completed.returncode;
if(!completed.cout.empty()) {
output = completed.cout;
} else if(!completed.cerr.empty()) {
output = completed.cerr;
}
return exit_code;
}