0

我正在尝试设计一个使用工作进程的程序——这只是一个用 C++ 编写的不同程序。

我像这样启动一个工作进程:

auto worker = boost::process::child("./worker.exe");
worker->detach();

问题是,工作进程正在将信息输出到产生它们的同一命令行窗口。这使程序的输出变得混乱。理想情况下,我希望每个进程都在自己的窗口中运行。

这可以使用 boost::process 吗?我只找到了有关隐藏窗口的信息。

我正在使用 Windows 和 Visual Studio 2019。

谢谢

4

1 回答 1

1

ITNOA

正如您在Boost::process hide console on windows中看到的,您可以创建新模式来创建进程。

CreateProcessA 函数系统调用,通过帮助创建标志向自己展示如何使用新控制台创建新进程:(CREATE_NEW_CONSOLE感谢使用多个控制台窗口进行输出

您可以编写如下代码

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);
于 2021-10-29T21:19:18.150 回答