c++ Boost进程在新窗口中打开进程(Windows)

b1payxdu  于 2023-05-19  发布在  Windows
关注(0)|答案(1)|浏览(267)

我正在尝试设计一个使用工人进程的程序-这只是一个用C++编写的不同程序。
我像这样启动一个worker进程:

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

问题是,辅助进程正在向它们所产生的同一命令行窗口输出信息。这会扰乱程序的输出。理想情况下,我希望每个进程都在自己的窗口中运行。
使用boost::process可以吗?我只找到了关于隐藏Windows的信息。
我正在使用Windows和Visual Studio 2019。
谢谢

66bbxpm5

66bbxpm51#

正如您在Boost::process hide console on windows中看到的,您可以创建新的模式来创建进程。
CreateProcessA function system call,通过帮助创建标志,展示如何使用新控制台创建新进程:CREATE_NEW_CONSOLE(感谢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);

相关问题