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

时间:2011-06-16 11:34:29

标签: windows process operating-system system

我一直在努力理解这两个进程创建标志之间的区别。 msdn documentation并不清楚区别。

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

1 个答案:

答案 0 :(得分:16)

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

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