Boost 进程在新窗口中打开进程 (Windows)
Posted
技术标签:
【中文标题】Boost 进程在新窗口中打开进程 (Windows)【英文标题】:Boost process open process in new window (Windows) 【发布时间】:2021-12-14 20:11:56 【问题描述】:我正在尝试设计一个使用工作进程的程序 - 这只是一个用 C++ 编写的不同程序。
我像这样启动一个工作进程:
auto worker = boost::process::child("./worker.exe");
worker->detach();
问题在于,工作进程正在将信息输出到生成它们的同一命令行窗口。这使程序的输出变得混乱。理想情况下,我希望每个进程都在自己的窗口中运行。
这可以使用 boost::process 吗?我只找到了关于隐藏窗口的信息。
我使用的是 Windows 和 Visual Studio 2019。
谢谢
【问题讨论】:
【参考方案1】:ITNOA
正如您在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);
【讨论】:
感谢您的回答。什么是#includes 让这个工作? 没关系,这是#include以上是关于Boost 进程在新窗口中打开进程 (Windows)的主要内容,如果未能解决你的问题,请参考以下文章
用js window.open在新窗口中打开链接,关于设置URL地址设置为变量的问题
使用“nofollow/赞助”时,window.open 在新窗口而不是新选项卡中打开
js 用window.open(参数) 打开新窗口,在新窗口怎么获取传过来的参数
window.open(url, windowname, opts) 在新选项卡中打开,而不是在 Firefox 中打开新窗口