Функция перезагрузки Linux, вызванная в программе C, вызывает потерю файла, созданного программой на диске

Я разработал программу на C (Linux), эта программа создает новый файл и записывает в него, после чего он перезагружает ПК.

После перезагрузки я потерял файл, созданный моей программой. Когда я деактивирую функцию перезагрузки, файл, созданный моей программой, все еще присутствует.

Такое поведение наблюдается в Linux: - OpenWrt (Backfire 10.03) на VirtualBox (файловая система ext2) - Linux (Ubuntu) (файловая система ext4)

Есть ли у вас объяснение этого поведения и как это исправить?

#include <stdio.h>
#include <sys/reboot.h>

int main ()
{
    FILE    *pFile;
    char    mybuffer[80];

    pFile = fopen ("/home/user/Desktop/example.txt","w");
    if (pFile == NULL) perror ("Error opening file");
    else
    {
        fputs ("test",pFile);
        fclose (pFile);
    }
    rename("/home/user/Desktop/example.txt","/home/user/Desktop/example123.txt");
    reboot(RB_AUTOBOOT);
    return 0;
}
7
задан developer 18 August 2014 в 09:42
поделиться