c++ - 如果我删除 C++ 程序正在向其写入数据的文件,会发生什么情况?

标签 c++ exception fstream file-handling

#include<iostream>
#include<string>
#include<fstream>
#include<unistd.h>
using namespace std;

int main(){
    fstream f;
    f.open("test.txt" , ios::app);
    string s="Hello";
    if(f.is_open()){
        cout << "File Open"<<endl;
        f << s;
        sleep(15);
        if(f.is_open()){
            cout << "Still Open" << endl;
        }else{
            cout << "Not Open" << endl;
        }
        s= "Hey \n";
        f<< s;
    }else{
        cout << "Not open" << endl;
    }
    f.close();
    }
}

此代码在正常执行时会将内容写入test.txt 文件。 但是如果我在程序运行的时候删除了这个文件,然后我发现程序没有抛出任何异常并且成功退出了。但是我删除后找不到文件text.txt

我应该怎么做才能知道写入文件是否成功?

最佳答案

这取决于您使用的操作系统。

在 Windows 上,操作系统会首先阻止您删除此类文件。

在 Linux 上,操作系统会让您删除此类文件,但会保留此文件的句柄,直到它被使用它的进程释放(在这种情况下,fstream 将释放资源).

关于c++ - 如果我删除 C++ 程序正在向其写入数据的文件,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53781013/

相关文章:

c++ - std::regex 未定义行为

c++ - 当我将构造函数定义放在主体而不是头文件中时,为什么会得到 undefined reference ?

c++ - 为什么编译器会抛出错误,说明重载的构造函数是模棱两可的?

c++ - 如何从包含 vector 作为 C++ 值的映射中删除对象

java - 将 super/this 构造函数调用中抛出的异常包装到其他异常中

c++ - Mysql C++ 驱动程序-创建后获取准备好的语句查询

c++ - 如何在IOS中使用fstream读取XML文件

c++用std::string读写结构数组到二进制文件

java - CompletableFuture 异常处理 runAsync & thenRun

c++ - 有没有办法请求在 C++ 中读取文本文件的某个位置?