C++标准输入输出流库之移花接木
曾经见过一个帖子,问如何用C\C++标准输入输出库实现lock file的功能。恰好我也碰到了类似的问题,思考了一下,觉得这是一个具有普遍意义的问题。实际上早期的标准库是支持lock file的,后来由于兼容性的问题取消了这个功能。我们知道,每个操作系统都提供了一套文件操作的API,C\C++标准库中支持的功能只能是所有操作系统API的交集,如果我们需要这个交集以外的功能,同时又希望能最大限度地利用标准库,那么该如何做呢?
实际上,标准库任何的文件操作最终都是通过操作系统提供的API来完成的,我们只需要将库中的抽象类型和底层的FILE HANDLE做一个一一映射就解决了这个问题,下面的文档详细地介绍了WIN32系统下如何完成映射。
http://www.codeproject.com/file/handles.asp
我要补充两点:
1.文档的方法同样适用于UNIX的文件描述符。
2.在抽象层和操作系统的映射的两端要分别做一次Clearup,确保提交给对方的是一个干净的对象。这样就可以保证这两个层次不会发生任何冲突。