【问题标题】:How to create process in Windows ( C++ ) to run another section of code?如何在 Windows ( C++ ) 中创建进程以运行另一段代码?
【发布时间】:2020-04-26 09:08:38
【问题描述】:

我正在尝试在一个简单的 cpp 程序中创建一个进程,并希望在此进程中运行来自不同源文件的另一段代码。我找到了适用于 Windows 的CreateProcess API,它允许我们创建进程,但它似乎只需要执行 exe 文件。有没有办法在windows中创建一个进程并提供一个函数等来由它执行,类似于线程?

PS:我不是在寻找基于线程的解决方案,因为我想用进程和共享内存测试一些东西。

【问题讨论】:

    标签: c++ windows process multiprocess


    【解决方案1】:

    有没有办法在windows中创建一个进程并提供一个类似于线程的函数等由它执行?

    没有。但是你可以做的是让你的程序运行另一个自己的副本,传递命令行参数告诉它需要做什么。您可以使用GetModuleFileName() 获取当前进程的EXE 文件的完整路径。然后,在您的main()/WinMain() 中,如果存在任何命令行参数,则运行相应的函数然后退出,否则正常运行您的主逻辑。

    【讨论】:

    • 感谢您的工作。虽然这解决了我目前的目的,但我很好奇这是如何完成的。例如,Chrome 在主进程之后启动了几个进程,并且安装目录不包含任何 exe 文件,以便在这些进程中运行代码。我想知道是否有办法复制相同的行为。
    • @SuryaPrakash 如果您查看进程管理器,您可能会发现 chrome 会启动同一个可执行文件的多个副本,但根据所需的功能具有不同的命令行参数。
    • @SuryaPrakash 使用命令行参数是向新进程发送命令的最简单方法,但它肯定不是唯一的方法。有许多可用的 IPC(进程间通信)机制。但是,是的,它们通常源于为每个进程使用相同的 EXE 文件以保持代码管理简单
    猜你喜欢
    • 2011-09-15
    • 2020-09-11
    • 2020-01-01
    • 2019-09-22
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多