createProcess函数的DETACH_PROCESS和CREATE_NO_WINDOW进程创建标志之间有什么区别

Man*_*nny 12 windows operating-system system process

我一直试图理解这两个进程创建标志之间的区别.在MSDN文档不明确的区别.

  • CREATE_NO_WINDOW是否导致进程具有控制台(标准输入/输出流已初始化)而不显示窗口而DETACH_PROCESS根本没有控制台?
  • 对孩子的孩子过程有什么影响?
  • 什么是行为矩阵,描述每个组合发生的事情(父有控制台,父有没有控制台)X(子可执行文件需要控制台(主),子可执行文件不需要控制台(WinMain)).

Han*_*ant 16

不同之处在于启动过程可以做什么.在这两种情况下,它都没有控制台.但是使用CREATE_NO_WINDOW选项,它可以调用AttachConsole(ATTACH_PARENT_PROCESS)并访问父控制台窗口(如果可用).当您指定DETACH_PROCESS时,这显然不起作用.然后唯一的选择是让已启动的进程使用AllocConsole()来创建自己的控制台.

或者换句话说,您可以确定启动的进程永远无法通过使用DETACH_PROCESS进入您自己的控制台.

  • 随机说明:powershell *不*像DETACH_PROCESS一样。 (2认同)