当基础文件取消链接时,fstream对象会发生什么?

时间:2017-05-31 09:55:11

标签: c++ fstream

我有以下代码打开流并写入它然后将其删除,再次尝试编写它。 有没有办法让fstream对象得到不存在的文件的通知并重新创建文件(我知道我可以使用stat来检查,但我想知道流对象本身是否有状态更改)

#include <iostream>     // std::cout
#include <fstream>      // std::fstream
#include <unistd.h>
#include <sys/stat.h>
int main () {
std::fstream fs;
fs.open ("test.txt",std::fstream::out);
if (fs.is_open())
{
    fs << "lorem ipsum";
    std::cout << "Operation successfully performed\n";
    std::cout<<fs.fail()<<std::endl;
    unlink("test.txt");
    fs << "more lorem ipsum";
    fs.write("hi",2);
    fs.write("hi",2);
    fs.write("hi",2);
    fs.write("hi",2);
    fs.write("hi",2);
    std::cout<<fs.fail()<<std::endl;
    fs.close();
}
    else
    {
        std::cout << "Error opening file";
    }
    return 0;
}

我试过了

is_open()
good()

1 个答案:

答案 0 :(得分:3)

无。 I / O继续到未链接的文件,当所有打开的FD都关闭时,该文件就会消失。