如何清理窗户上的命名管道
How are named pipes cleaned up on windows?
我正在考虑使用命名管道来调试DLL的输出。我的DLL是由一个专有的封闭源代码程序加载的,该程序有时会崩溃。问题是,当程序崩溃时,我的一些当前日志输出会丢失,因为windows在将其写入磁盘之前会清理所有内容。
所以我的问题是,如果我在一个单独的进程中创建一个命名管道,并从我的DLL连接到它,而我的DLL正在崩溃并被清理的进程,我还能从第二个进程读取崩溃前写入命名管道的数据吗?
我必须在非阻塞(缓冲)庄园中写入命名管道,以便尽可能少地影响时间,什么是最佳配置?重叠IO?有人能提供一个好阅读的链接吗?(我不是C++初学者,但我是WinAPI初学者)
我不相信命名管道缓冲的数据能在一个合作伙伴失败后幸存下来。即使您设法重新打开管道,旧实例化中的任何数据都将消失。
您可以使用内存映射文件(进程间共享内存的Windows机制),但在处理共享数据空间的状态时必须小心——当进程再次唤醒时,在哪里恢复写入新数据?水槽里可能有某种"我读了这么远"的指示。您还必须在源代码中写入时刷新数据,以避免您在这个问题中发现的问题,这可能会使性能变得不理想,但您可以先进行测试,然后再进行调优。
相关文章:
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- IPC使用多个管道和分支进程来运行Python程序
- 函数何时会在c++中包含stack_Unwind_Resume调用
- rcpp函数中的清理时间很长
- Python中的for循环与C++有何不同
- 如何创建函数管道,以便函数一个接一个地运行?
- 为什么 ulimit -v 在 Clang 的地址清理器下不起作用?
- Gstreamer 管道从命令 lne 到 c 代码
- 外壳包装器句柄/执行交互式命令管道C++ UNIX
- LeetCode 1:两和 - 地址清理器:堆缓冲区溢出地址
- 将旧管道转换为现代 openGL 时出现问题
- 在C++中释放内存期间,迭代器与指针有何不同
- 即发即弃 std::线程对象清理自身
- 内存清理程序报告全局对象构造中未初始化值的使用
- 如何使用管道在父级和子级之间来回传递文件
- 在没有管理员权限的情况下连接到同一网络中的命名管道
- 如何测量管道延迟?
- 我如何使用此程序管道多个命令?C++
- 并行块(线程清理器)之外的 OpenMP 中的争用条件;误报?
- 如何清理窗户上的命名管道