Windows Server 2003 下 WaitForSingleObject异常

fly4free 2012-09-12 01:12:02
我有一个系统服务,里面用 CreateProcess 来创建一个“工作进程”。

然后用 WaitForSingleObject 等待该进程句柄的通知状态。

经过一段时间测试,发现代码在 某个Windows Server 2003 SP2 下工作不正常。

1. 有的时候进程退出了,但 WaitForSingleObject 没有 返回 WAIT_OBJECT_0,而是 WAIT_FAILED,
GetLastError() 返回 6 (ERROR_INVALID_HANDLE)

2. 有的时候进程并没有退出,但它却 返回 WAIT_OBJECT_0,影响了我的业务流程


情况1是先发现的,后来又出现情况2

我应该给系统再打什么补丁吗?或者在等待通知这个代码处怎么写?

...全文
94 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
傻X 2012-09-12
  • 打赏
  • 举报
回复
恭喜楼主解决问题
fly4free 2012-09-12
  • 打赏
  • 举报
回复
再一次通过查阅代码,发现目前的问题是我自己疏忽造成的,最终使得获得的句柄为 NULL,而我没有发现,也没有判断。。。。

不过我在网上找到一个 有关 Win2k3 下 WFSO 有毛病的帖子,估计和我的情况还是不一样。
希望不要遇上问题了~

结贴,由于自己的原因,虽然分不多,蹭者有份~

fly4free 2012-09-12
  • 打赏
  • 举报
回复
我不能死等,我在循环中还等待线程退出事件呢。
傻X 2012-09-12
  • 打赏
  • 举报
回复
50ms 你觉得呢?自己的代码呀

一般为了控制好逻辑都infinite的
fly4free 2012-09-12
  • 打赏
  • 举报
回复
我看错了。只有一条,就是第一条,本来进程还在,就返回无效句柄


waitResult = WaitForSingleObject(processChkprogHandle, 50);


难道 50 太小了吗?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧