createProcess函数的DETACH_PROCESS和CREATE_NO_WINDOW过程创build标志有什么区别?

我一直在试图理解这两个进程创build标志之间的区别。 msdn文档不清楚这个区别。

  • CREATE_NO_WINDOW是否会导致进程有控制台(标准input/输出stream初始化)而不显示窗口,而DETACH_PROCESS根本没有控制台?
  • 什么是一个孩子的儿童过程的影响?
  • 什么是行为matrix,描述每个组合(父母有控制台,父母没有控制台)发生了什么X(子可执行文件需要控制台(主),子可执行文件不需要控制台(WinMain))。

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

或者换句话说,你可以确定启动的进程永远不能通过使用DETACH_PROCESS来进入你自己的控制台。