update platform::new_engine_instance

This commit is contained in:
MihailRis 2026-08-03 20:02:30 +03:00
parent 7c9fff19e4
commit 48a09b10be
2 changed files with 11 additions and 7 deletions

View file

@ -403,6 +403,7 @@ static int l_start_background_instance(lua::State* L) {
"--script", io::resolve(scriptPath).u8string(), "--script", io::resolve(scriptPath).u8string(),
"--sub-depth", std::to_string(engine->getCoreParameters() "--sub-depth", std::to_string(engine->getCoreParameters()
.subProcessDepth + 1), .subProcessDepth + 1),
"--log", io::resolve(outputPath),
}; };
args.emplace_back("--project"); args.emplace_back("--project");
args.emplace_back(io::resolve(engine->getProject().path).u8string()); args.emplace_back(io::resolve(engine->getProject().path).u8string());
@ -417,11 +418,9 @@ static int l_start_background_instance(lua::State* L) {
if (handle == -1) { if (handle == -1) {
throw std::runtime_error("sub-processes limit exceeded"); throw std::runtime_error("sub-processes limit exceeded");
} }
::processes[handle] = platform::new_engine_instance( ::processes[handle] =
std::move(args), platform::new_engine_instance(std::move(args), "", true);
outputPath.empty() ? "" : io::resolve(outputPath),
true
);
return lua::pushinteger(L, handle); return lua::pushinteger(L, handle);
} }

View file

@ -28,6 +28,8 @@
#include <sys/wait.h> #include <sys/wait.h>
#endif #endif
using namespace std::literals;
namespace platform::internal { namespace platform::internal {
std::filesystem::path get_executable_path(); std::filesystem::path get_executable_path();
} }
@ -356,7 +358,7 @@ std::unique_ptr<Process> platform::new_engine_instance(
if (!outputFile.empty()) { if (!outputFile.empty()) {
si.dwFlags |= STARTF_USESTDHANDLES; si.dwFlags |= STARTF_USESTDHANDLES;
si.hStdOutput = CreateFileW( si.hStdOutput = CreateFileW(
toWString(outputFile.u8string()).data(), toWString(outputFile.empty() ? outputFile.u8string() : "NUL"s,).data(),
GENERIC_WRITE, GENERIC_WRITE,
FILE_SHARE_WRITE | FILE_SHARE_READ, FILE_SHARE_WRITE | FILE_SHARE_READ,
nullptr, nullptr,
@ -434,9 +436,12 @@ std::unique_ptr<Process> platform::new_engine_instance(
if (subProcess) { if (subProcess) {
pid_t pid = fork(); pid_t pid = fork();
if (outputFile.empty()) {
outputFile = "/dev/null";
}
int fd = open( int fd = open(
outputFile.string().c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0644 outputFile.string().c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0644
); );
if (pid == 0) { if (pid == 0) {
prctl(PR_SET_PDEATHSIG, SIGTERM); prctl(PR_SET_PDEATHSIG, SIGTERM);