Название: QFile и linux Отправлено: onyborak от Сентябрь 15, 2016, 22:01 Добрый вечер. Вопрос касаемо сохранения файла с помощью класса QFile на linux.
Собственно проблема: Хочу сохранить файл на примонтированном usb носителе. Открываю файл, сохраняю туда информацию, делаю QFile::flush() и закрываю его. Через команду ls вижу данный файл, затем просто выдергиваю флешку, затем опять ее вставляю. Через команду ls этого файла больше не вижу, его вообще нет на флешке. За редким исключением, он все таки иногда сохраняется и его видно после извлечения и вставки обратно. Вариант использовать системный вызов sync и безопасное извлечение не подходит. Необходимо чтобы это работало при экстренном извлечении носителя. Данный фрагмент кода отрабатывает полностью. Собственно сам код: Код: QFile TMPPlaylist(NameTMPPlayList); Что еще можно попробовать сделать, чтобы этот файл все таки сохранился? Название: Re: QFile и linux Отправлено: Alex Custov от Сентябрь 15, 2016, 23:52 http://linux.die.net/man/2/fsync ?
Название: Re: QFile и linux Отправлено: qate от Сентябрь 16, 2016, 08:38 Вариант использовать системный вызов sync и безопасное извлечение не подходит. можно попробовать настроить опции монтирования для usb дисков (сам я не пробовал, но думаю такое возможно) Название: Re: QFile и linux Отправлено: kambala от Сентябрь 16, 2016, 12:54 QSaveFile еще попробуй
Название: Re: QFile и linux Отправлено: onyborak от Сентябрь 16, 2016, 20:44 можно попробовать настроить опции монтирования для usb дисков (сам я не пробовал, но думаю такое возможно) Да, есть. Но монтирование с опцией sync в моем случае это тоже плохо, т.к. все равно будут задержки в ПО тогда, когда это не нужно. Хотелось бы именно сделать запись конкретного файла и в конкретный момент времени. По поводу fsync и QSaveFile попробую. Название: Re: QFile и linux Отправлено: onyborak от Сентябрь 16, 2016, 22:08 http://linux.die.net/man/2/fsync ? fsync не помог. Метод возвращает 0, но при этом все равно файла на носителе нет.Название: Re: QFile и linux Отправлено: onyborak от Сентябрь 16, 2016, 22:12 QSaveFile еще попробуй с помощью QSaveFile::commit не работает. Метод всегда почему-то возвращает false.Название: Re: QFile и linux Отправлено: onyborak от Сентябрь 16, 2016, 22:13 Может быть есть еще какие идеи?
Название: Re: QFile и linux Отправлено: qate от Сентябрь 17, 2016, 11:04 Хотелось бы именно сделать запись конкретного файла и в конкретный момент времени. как это понимать ? нужно записать файл например строго в 13:13 ? Название: Re: QFile и linux Отправлено: onyborak от Сентябрь 19, 2016, 19:08 как это понимать ? нужно записать файл например строго в 13:13 ? Под определенным временем я тут подразумеваю: когда программа закончила выполнение этой функции, файл появился уже на носителе. Название: Re: QFile и linux Отправлено: qate от Сентябрь 20, 2016, 09:07 как это понимать ? нужно записать файл например строго в 13:13 ? Под определенным временем я тут подразумеваю: когда программа закончила выполнение этой функции, файл появился уже на носителе.гарантировать это может umount, вызванной этой функцией почему нельзя вызвать umount ? Название: Re: QFile и linux Отправлено: titan83 от Сентябрь 22, 2016, 13:23 Не вы первый, не вы последний.
Код: system("sync"); |