bad_cast
Из стандарта,
5.2.7. Dynamic cast:
The value of a failed cast to pointer type is the null pointer value of the required result type. A failed cast to reference type throws std::bad_cast (18.7.2).
flush
Если вы что-то выводите - ещё не факт, что это сразу свалится куда нужно. В частности, если это сделали перед fork(), то это приведёт к тому, что строка, печатаемая функцией из семейства print - будет распечатана в обоих процессах. Никакой '\n' в выводимой строке (в отличии от std::endl) не приведёт к имплицитному вызову flush(). С другой стороны, если вызвали fclose() - там явно написано, что flush будет, а в соответствующей close() - такого не нашёл.
sync
Старый добрый sync(). Он всесилен! :-)
no subject
Date: 2012-11-23 05:54 pm (UTC)no subject
Date: 2012-11-23 06:16 pm (UTC)Re: это что еще за троль ??
Date: 2012-11-23 07:17 pm (UTC):-(
Re: это что еще за троль ??
Date: 2012-11-23 07:22 pm (UTC)Re: это что еще за троль ??
Date: 2012-11-23 07:23 pm (UTC)Re: Тогда еще до кучи fdatasync и posix_fadvise с флагом POSIX_FADV_DONTNEED.
Date: 2012-11-23 07:18 pm (UTC):-)
Re: Тогда еще до кучи fdatasync и posix_fadvise с флагом POSIX_FADV_DONTNEED.
Date: 2012-11-23 07:23 pm (UTC)Re: Тогда еще до кучи fdatasync и posix_fadvise с флагом POSIX_FADV_DONTNEED.
Date: 2012-11-23 07:24 pm (UTC)Re: Тогда еще до кучи fdatasync и posix_fadvise с флагом POSIX_FADV_DONTNEED.
Date: 2012-11-23 07:32 pm (UTC)Re: Тогда еще до кучи fdatasync и posix_fadvise с флагом POSIX_FADV_DONTNEED.
Date: 2012-11-23 07:48 pm (UTC)Копать про fdatasync и posix_fadvise я не от хорошей жизни начал. Надо было чтобы при жестком отключении питания одной железяки свежеправленные файлики оставались свежеправленными.
К стати, прямого способа сделать это с плюсовыми потоками не нашел. Методов у них подобных нет, а хендл снаружи недоступен. Приходилось переоткрывать файл C-шным API и делать все оттудова.
Re: Тогда еще до кучи fdatasync и posix_fadvise с флагом POSIX_FADV_DONTNEED.
Date: 2012-11-23 08:17 pm (UTC)Re: Тогда еще до кучи fdatasync и posix_fadvise с флагом POSIX_FADV_DONTNEED.
Date: 2012-11-24 10:58 am (UTC)Смотри, по сути у нас есть три буфера: буфер в std::basic_ostream (аналогичен буферу в fopen/fwrite/fclose из C), внутренние буферы ядра (в частности буфер ФС) и буфер устройства. На последний мы повлиять не можем (к сожалению), а вот на первые два - без проблем. С первым работает flush()/fflush(), со вторым работает sync()/fsync()/fdatasync().
sync() - это "удар по площадям". Он сбрасывает все дисковые буферы - тормоз тот еще.
fsync() - это "точечный удар". Он сбрасывает только данные и метаданные относящиеся к указанному файловому дескриптору.
fdatasync() - это тот-же fsync(), но он не трогает метаданные. Т.е. вся важная информация будет записана на устройство, а atime/mtime останутся в буфере. Он меньше "дергает" устройство и быстрее работает, и при этом дает достаточные гарантии по данным.
Очень жаль только что из std::basic_ostream последние две функции недоступны.
Что касается posix_fadvise то это уже из области внутренних оптимизаций ядра. Особого эффекта от него я не заметил, но почему бы и не сказать ядру что с этим файлом мы больше не собираемся работать.
Re: Тогда еще до кучи fdatasync и posix_fadvise с флагом POSIX_FADV_DONTNEED.
Date: 2012-11-24 02:34 pm (UTC)Круто! Я настолько не углублялся. (Мои коллеги - да, мне это нужно не было...)
Но интересно.
no subject
Date: 2012-11-23 07:54 pm (UTC)точнее слышал что вроде как это в новый стандарт впендюрили (наверняка аналогично жавовскому синку или шарповому), но ни разу не юзал
Re: я вот не знаю что такое sync
Date: 2012-11-23 08:06 pm (UTC)no subject
Date: 2012-11-23 11:20 pm (UTC)Re: а чем оно великое? для 99.99% задач оно нафиг не нужно )
Date: 2012-11-24 06:39 am (UTC)Ведь, всё фигня - кроме пчёл!
Хотя... Если в воду залезть, и пчёлы - фигня!!!
;-)
Re: а чем оно великое? для 99.99% задач оно нафиг не нужно )
Date: 2012-11-24 11:01 am (UTC)Re: а чем оно великое? для 99.99% задач оно нафиг не нужно )
Date: 2012-11-24 11:06 am (UTC)ffmpeg -i input -vcodec libx264 ....
Date: 2012-11-24 02:45 pm (UTC)Ты бы лучше подсказал, как с помощью ffmpeg делать H.264 файлы, которые бы гарантированно воспроизводились бы моим Nokia N9.
Почему-то один и тот же файл обработанный, как в сабже - иногда открывается, а иногда нет...
Те файлы, которые записаны на телефон были при покупке - H.264 854x480 24bpp 25fps. Может ещё что-то забыл.
Я, правда, кроме указанных в сабже - пробовал менять разрешение и всё.
Может, нужно что-то другое прописать? Какие тут могут быть тонкости?
Пробовал ставить пакет media-video/x264-encoder ( http://www.videolan.org/developers/x264.html ).
Но он делает своим енкодиром только видео, без звука. Либо я чего-то не понимаю...
no subject
Date: 2012-11-24 07:21 pm (UTC)пресет бейзлайн заюзай
(названия пресетов где-то в /usr/share/ffmpeg/libx264 вроде)
я не знаю что там с нокией, но старые айфоны очень не любили b-фреймы
-acodec copy можешь сделать если оригинальный звук нокия читает, если нет - попробуй -acodec libfaac или aac, на худой конец -acodec libmp3lame
Re: -vpre пресет бейзлайн заюзай
Date: 2012-11-25 05:04 pm (UTC)Действительно, нашел Отпишусь по результатам...
no subject
Date: 2012-11-25 09:59 pm (UTC)если будут проблемы, можно скопировать любой презет и добавить туда
я не знаю что там с айподами, но флеш и старые версии ios очень не любили би-фреймы
Re: -vpre пресет бейзлайн заюзай
Date: 2012-11-26 06:31 am (UTC)Правда, я ещё указал 10/24/25 fps (-r).
Ещё указал разрешение (-s wvga), причём qvga - приводит к тому, что звук воспроизводится без видео. :-)
"Спасибо, дохтур!" :-)