例如
HANDLE h=CreateProcess去执行一个net start/stop 一个比较消耗时间的服务的启动/停止。
并且WaitForSingleObject(h, INFINITE)去等待。
发现net stop的时候这个服务还在运行,可是WaitForSingleObject就已经返回了。这到底是为什么呢?

解决方案 »

  1.   

    因为 net start/stop 是不阻塞的
      

  2.   

    BOOL CreateProcess(
      LPCTSTR lpApplicationName,
      LPTSTR lpCommandLine,
      LPSECURITY_ATTRIBUTES lpProcessAttributes,
      LPSECURITY_ATTRIBUTES lpThreadAttributes,
      BOOL bInheritHandles,
      DWORD dwCreationFlags,
      LPVOID lpEnvironment,
      LPCTSTR lpCurrentDirectory,
      LPSTARTUPINFO lpStartupInfo,
      LPPROCESS_INFORMATION lpProcessInformation
    );
    返回值是布尔型变量啊,不是句柄,句柄在lpStartupInfo里