Boost process open process in new window (Windows)
Boost process open process in new window (Windows)
我正在尝试设计一个使用工作进程的程序——这只是一个用 C++ 编写的不同程序。
我这样启动一个工作进程:
auto worker = boost::process::child("./worker.exe");
worker->detach();
问题是,工作进程将信息输出到生成它们的同一命令行 window。这使程序的输出变得混乱。理想情况下,我希望每个进程在其自己的 window.
中 运行
这可以使用 boost::process 吗?我只找到了有关隐藏 window.
的信息
我正在使用 Windows 和 Visual Studio 2019。
谢谢
ITNOA
如您在中所见,您可以创建新的创建进程模式。
CreateProcessA function system call, Show yourself to how to create new process with new console, by helping creation flags: CREATE_NEW_CONSOLE
(thanks to Using multiple console windows for output)
你可以像下面这样写代码
struct new_window
: ::boost::process::detail::handler_base
{
// this function will be invoked at child process constructor before spawning process
template <class WindowsExecutor>
void on_setup(WindowsExecutor &e) const
{
e.creation_flags = ::boost::detail::winapi::CREATE_NEW_CONSOLE_;
}
};
为了使用这个,你可以像下面这样写
::boost::process::child ch("./worker.exe", new_window);
我正在尝试设计一个使用工作进程的程序——这只是一个用 C++ 编写的不同程序。
我这样启动一个工作进程:
auto worker = boost::process::child("./worker.exe");
worker->detach();
问题是,工作进程将信息输出到生成它们的同一命令行 window。这使程序的输出变得混乱。理想情况下,我希望每个进程在其自己的 window.
中 运行这可以使用 boost::process 吗?我只找到了有关隐藏 window.
的信息我正在使用 Windows 和 Visual Studio 2019。
谢谢
ITNOA
如您在
CreateProcessA function system call, Show yourself to how to create new process with new console, by helping creation flags: CREATE_NEW_CONSOLE
(thanks to Using multiple console windows for output)
你可以像下面这样写代码
struct new_window
: ::boost::process::detail::handler_base
{
// this function will be invoked at child process constructor before spawning process
template <class WindowsExecutor>
void on_setup(WindowsExecutor &e) const
{
e.creation_flags = ::boost::detail::winapi::CREATE_NEW_CONSOLE_;
}
};
为了使用这个,你可以像下面这样写
::boost::process::child ch("./worker.exe", new_window);