c/c++语言开发共享如何让子进程使用与parrent相同的环境变量加上它自己在windows中?

在用于创建新子进程的窗口中,我正在使用CreateProcess函数:

 BOOL WINAPI CreateProcess( __in_opt LPCTSTR lpApplicationName, __inout_opt LPTSTR lpCommandLine, __in_opt LPSECURITY_ATTRIBUTES lpProcessAttributes, __in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes, __in BOOL bInheritHandles, __in DWORD dwCreationFlags, __in_opt LPVOID lpEnvironment, __in_opt LPCTSTR lpCurrentDirectory, __in LPSTARTUPINFO lpStartupInfo, __out LPPROCESS_INFORMATION lpProcessInformation ); 

在这里我们可以看到CreateProcess可以获取lpEnvironment参数来指定新进程的环境变量,如果它是NULL,则子进程将具有与parrent相同的环境。 现在我想让孩子拥有与parrent相同的环境以及lpEnvironment中指定的环境变量(即父进程和指定进程的合并环境)。 你会怎么建议这样做? 我应该采用父级的所有envs,将它们与新的env合并并将它们全部传递给CreateProcess吗?

    使用getenv获取crt env添加自己的并设置

    我认为你走在正确的轨道上。 获取现有的env块,附加新的东西,将其传递给CreateProcess函数,然后销毁新的env块。

    要获取当前块,请使用GetEnvironmentStrings 。 添加新变量,您可能需要通过简单的字符串操作来完成。 环境块只是以空值终止的字符串的连续序列,最后是双空,如此处所述。 如果您要附加新的env变量或更新现有变量,则可能需要先检查它是否已定义。

      以上就是c/c++开发分享如何让子进程使用与parrent相同的环境变量加上它自己在windows中?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/559864.html

      (0)
      上一篇 2021年1月27日
      下一篇 2021年1月27日

      精彩推荐