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);