应用程序是否有可能丢失与文件的 I/O 连接

Is it possible that application can lose I/O connection to a file?

本文关键字:连接 文件 是否 有可能 应用程序      更新时间:2023-10-16

我有一个C应用程序。这会在启动时创建与文件的连接,并连续运行很多天。

我只连接一次,而不是在代码中重新连接它。仅检查是否

if(NULL == file)

是否存在我的应用程序丢失该文件处理程序的I/O连接的情况?

如果是。有没有办法,如何为它创建测试用例?

是的,这是可能的。例如,如果文件位于另一台计算机或可移动存储上。然后,您可以物理断开/拔下设备,手柄上的后续操作将失败。

正如评论中提到的其他人,您可以通过创建 RAM 磁盘并卸载它或杀死驱动程序来在测试用例中模拟它。或者,如果您只关心单向 I/O,也许您可以使用管道测试代码,然后关闭管道的另一端。

您可以断开与文件的连接,但它不会将文件变量设置为 NULL,症状将是 IO 错误。 读取或写入将失败。(对于C++流,将设置坏位而不是为格式错误设置的故障位;