![]() |
|
Модераторы: xvr |
![]()
|
|
| comcon1 |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: нет Всего: 17 |
Вот кусок проги.
Выдает она следующее:
Смотрю, что за ошибка (EINVAL). Ман мне пишет:
in_fd - дескриптор входного файла. Мож кто сталкивался - знаете, что делать??? Открываются файлы нормально. Оба. Но входной дескриптор ей почему-то не катит... Хотя файл совершенно обычный. И всего 700 байт. |
||||||
|
|||||||
| bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 4 Всего: 317 |
какая ОСь ?
SELinux не включён ли ? BSD process accounting ? в догонку, открываешь с O_RDONLY: может стоит в добавку с O_NONBLOCK или O_NDELAY ..... Это сообщение отредактировал(а) bilbobagginz - 24.7.2005, 20:54 -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: нет Всего: 17 |
SELinux не включён ли ?
BSD process accounting ? --- что это вообще такое?? Ось - Mandrake 10. На счет O_NONBLOCK - ща проверю. |
|||
|
||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: нет Всего: 17 |
Ядро (забыл сказать) 2.6. Проверил с такими флагами - то же самое.. Эта хренька вызывается из потока. Мож как-то с этим связано??
И я ща еще проверю на gentoo... Тот же errno при вызове sendfile(). Видимо не в системе дело... Это сообщение отредактировал(а) comcon1 - 25.7.2005, 09:57 |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 3 Всего: 44 |
хм, вот рабочий пример
|
|||
|
||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: нет Всего: 17 |
Это пример из книги Митчелла. Не работает даже он. По ходу в этой функции глюки. Я смотрел исходники проги cp -- нигде не используется sendfile().
Потом нашел где-то приписку к этому sendfile(), который при получении EINVAL запускает стандартное копирование http://www.ussg.iu.edu/hypermail/linux/ker...911.2/0489.html. То есть -- ошибка не у меня одного.. Придется пользоваться read () и write () . Да и портабельнее будет. |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 3 Всего: 44 |
все верно, у тебя все сведется к бональному
open open цикл чтения по блокам read write close close |
|||
|
||||
| bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 4 Всего: 317 |
BSD process accounting... это такая штука ограничения и мониторинга.
не важно - ты на линухе и видимо её не включал. насчёт sendfile()...есть отношение к виду файловой системы - с нек-рыми файловыми системами вызов НЕ работает [ не проверял с какими ] насчёт потоков - вполне возможно что поток блокирует ввод/вывод. протесть без потоков. я запустил тест на 2-х системах: Убунту (ядро 2.6.12.1 ) - выдаёт ту же ошибку. RHEL3 ( ядро: 2.4.х ) работает -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: нет Всего: 17 |
Протестил без потоков (писал выше). Мож из-за 2.6? Система в gentoo и в Mandrake ext3.
Ай.. Да я так понял лучше ее не юзать - эту функцию. Делаю по тупому. |
|||
|
||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
Это с другого форума. RTFM, однако. ЗЫ. Вчера думал усе, сейчас буду ядро раскурочивать. Очень уж хотелось sendfile поюзать. Седня прошарил форумы - оказалось просто manpages 1.x для 2.6 ядрышек не подходит. Это сообщение отредактировал(а) GrayCardinal - 25.10.2005, 10:07 |
|||
|
||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: нет Всего: 17 |
Да уж. Это сильно режет возможности этой функции.
|
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |