在没有锁定应用程序的情况下生成控制台窗口
Spawn console window without locking application
我正在尝试生成一个控制台窗口,以便根据用户选择的一些数据从我的应用程序中运行另一个可执行文件。现在这是一个非常简单的设置。
std::string command;
{
command += """ + INSTALL_DIR + "export.exe"";
command += " -id " + processID;
}
system(command.c_str());
问题是导出可能需要一个小时或更长时间,我不想锁定应用程序。我看到有人提到,在命令末尾使用"&"可以实现这一点(如:"c:\some\path\export.exe-id 19998&),但这对我不起作用。
如有任何帮助,我们将不胜感激。
问题是导出可能需要一个小时或更长时间,我不想锁定应用程序。
CCD_ 1调用同步执行,并阻塞调用线程直到完成。
寻找CreateProcess()
来直接与winapi交互,或者使用fork()
和exec()
家族中的一些函数来生成异步运行的子进程。
另一个(可移植的)解决方案是在应用程序中使用一个单独的std::thread
,它发出system()
调用:
std::string command;
command += """ + INSTALL_DIR + "export.exe"";
command += " -id " + processID;
std::thread t([](const std::string& command){
system(command.c_str());
}, command);
std::cout << "main thread" << std::endl;
但在应用程序退出之前,您至少需要加入该线程:
t.join();
amp;在shell中工作(命令提示符)。您应该做的是使用CreateThread
创建一个新线程,或者如果您使用C++11 std::thread
,则从那里调用新命令。不过,我建议不要使用系统命令:http://www.cplusplus.com/forum/articles/11153/
相关文章:
- Visual Studio 2017 停止工作,并在打开后显示许多控制台窗口
- 如何从 Win32 C++ 应用程序输出到父控制台窗口?
- 如何获取控制台窗口的宽度?
- 在C++中隐藏键盘记录器的控制台窗口
- C++ 如何在 OpenGL 程序中远程调用控制台窗口
- 为什么调试时没有显示控制台窗口
- 有没有办法像动画一样移动控制台窗口?
- 如何在C++中居中输出控制台窗口
- 控制台窗口未在开发C++中打开?即使也有 getch() ?
- QTextEdit 提升为构建控制台窗口
- 如何拒绝一个叫做的过程以写入继承的控制台窗口
- Visual C 关闭文本文件和打开新的控制台窗口
- 有没有办法为使用 Boost 生成的进程创建新的控制台窗口
- C++:显示控制台窗口的输出
- C++:如何在控制台窗口中显示结果
- (C++)控制台窗口保持立即关闭,即使我在Visual Studio中是CTRL + F5
- 如何在调用系统()时隐藏控制台窗口
- 在控制台窗口关闭(在Windows上)上优雅地关闭命令行应用程序
- C++控制台窗口放在前面
- C++/CLI 项目如何在控制台窗口中显示消息