что произойдет, если я удалю файл, в который программа на С ++ записывает данные? - PullRequest
0 голосов
/ 14 декабря 2018
#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 после того, как я его удалил.

Что мне нужно сделать, чтобы узнать, успешно ли происходит запись в файл?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Это зависит от используемой вами операционной системы.

В Windows ОС не позволит вам удалить такой файл в первую очередь.

В Linux ОС позволит вам удалить такойфайл, но будет хранить дескриптор этого файла до тех пор, пока он не будет освобожден процессом, который его использует (в этом случае, когда fstream освободит ресурс).

0 голосов
/ 14 декабря 2018

В Linux файл продолжает существовать, пока программа не закроет fstream , но это не значит, что вы видите его через ls .Когда fstream закрыт, файл действительно удаляется

...