On Wed, 11 Oct 2006 15:35:33 +0700 Dmitriy Anisimkov wrote:
>Хм, Inout_File mode видел. Такого -- нет. Спасибо за пример, буду над >ним думать.
>Наверное я поспешил с цитатами из RM. В данном случае режим файла либо >In либо Out.
>Наверное придется открывать 2 файла одновременно, один на запись другой >на чтение.
>Либо пользоваться библиотеками другими.
Ааа вот есть
---------------
*package* Ada.Direct_IO *is*
3
*type* File_Type *is* *limited* *private*;
4
*type* File_Mode *is* (In_File, Inout_File, Out_File);
Угу. Именно это я и видел (см. мою цитату вверху). Насколько я понял, Direct_IO предназначен для случайного поиска по последовательному файлу. То есть: позиционировать курсор на запись номер 8, прочитать её, курсор на запись номер 10, записать новые данные и т.п. У портов же последовательное чтение по мере появления данных...
WBR
--
bsam
On Wed, 11 Oct 2006 13:27:11 +0400, you wrote:
Угу. Именно это я и видел (см. мою цитату вверху). Насколько я понял, Direct_IO предназначен для случайного поиска по последовательному файлу. То есть: позиционировать курсор на запись номер 8, прочитать её, курсор на запись номер 10, записать новые данные и т.п. У портов же последовательное чтение по мере появления данных...
Возможно, будет работать с портом, если файл откроется, конечно. Например:
package Port_IO is new Ada.Direct_IO (Interfaces.C.char);
и читать-писать с позиции 1.
В-принципе, порты - файлы прямого доступа с размером записи 1 бит или байт. Все остальное - системные навороты. Так что, это зависит от того с какими атрибутами в Ada RTL и какой файл открывается. Пробовать надо, и для разных /dev/*.
А вообще, лучше сразу системные вызовы пользовать. Все равно, когда-нибудь понадобится ioctl, тайм-аут, там поставить, и т.п. Переносимым оно не будет...
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти