gpt4 book ai didi

c++ - 如何在进程生命周期的最后执行网络 IO?

转载 作者:可可西里 更新时间:2023-11-01 02:33:43 24 4
gpt4 key购买 nike

我正在用 C++ 开发一个 DLL,它需要使用 write() 通过(先前建立的)TCP/IP 连接写入一些数据。称呼。准确地说,DLL 应该在进程停止时通过网络发送一点“进程 12345 在 2007-09-27 15:30:42 终止,i 的值为 131”消息。

不幸的是,我所知道的检测进程正在结束的所有方法显然都太晚了,任何网络调用都无法成功。特别是,我尝试了以下方法和 write()调用在每种情况下都返回 -1:

  1. 调用 write()来自全局对象的析构函数。
  2. 调用 write()来自使用 atexit() 注册的回调函数.
  3. 调用 write()来自 DllMain (如果 reason 参数是 DLL_PROCESS_DETACH)。我知道这样做并不安全,但我有点绝望了。 :-)

我知道 DLL 无法检测到任何进程关闭(它可能在进程终止之前很久就被卸载了)但是因为 DLL 需要发送的关闭数据取决于其他DLL 中的代码,这是可以接受的。我基本上是在寻找可以安全地执行网络 IO 的最新时刻。

有人知道怎么做吗?

最佳答案

考虑从单独的看门狗进程监控进程。

确定进程是否已退出:http://msdn.microsoft.com/en-us/library/y111seb2(v=VS.71).aspx

教程:管理 Windows 进程:http://msdn.microsoft.com/en-us/library/s9tkk4a3(v=VS.71).aspx

关于c++ - 如何在进程生命周期的最后执行网络 IO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3803671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com