簡體   English   中英

底層文件取消鏈接時,fstream對象會怎樣?

[英]What happens to fstream object when underlying file is unlinked?

我有以下代碼打開流並對其進行寫入,然后將其刪除,然后再次嘗試將其寫入。 有沒有一種方法可以讓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()

沒有。 I / O繼續到未鏈接的文件,當關閉所有未打開的FD時,該文件將消失。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM