![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
Прочитал описание по команде read()Мне нужно прочитать меньше байт, чем есть в наличии, в канале связи.
![]() -------------------- i_i (';') (V) ![]() |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
не понял в чем проблема..функция read принимает количество байт которые нужно прочитать..
Добавлено через 3 минуты и 28 секунд кстати, позволю себе заметить что статья немного некорректная...
создается ощущение что функция читает только из файла...функция read может читать из любого дексриптора..будь то сокет, файл, консоль или что нибудь еще. |
|||
|
||||
Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
azesmcar, меня смущает фраза "чем есть в наличии, в канале связи." - я с Linux'ом 2-ой раз в жизни сталкиваюсь, что за канал связи ? Может попробовать просто файл.
-------------------- i_i (';') (V) ![]() |
|||
|
||||
azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
немного теории..
в линуксе существует такая удобная штука как дескриптор.. все что вы открываете - сокеты, файлы, stdin, stdout, stderr и.т.д... это дескрипторы т.е. обычный integer. К примеру вы можете спокойно написать
можете перенаправить например stdout в ваш сокет и все что будет выводится в консоль будет отправлено в сеть по данному сокету. Удобная штука. Конкретно функция read как первый параметр принимает этот дескриптор.. к примеру
Добавлено через 10 минут и 4 секунды
а без разницы, файл или что-то другое...я же говорю он читает из всего что под руку попадается ![]() Это сообщение отредактировал(а) azesmcar - 9.3.2009, 16:14 |
||||||
|
|||||||
Voldemar2004 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
azesmcar, понятно, что без разницы файл или что-то еще, но если файл пустой, то как
Вот создал файл с именем "13" только для чтения: ![]() И
![]() Это сообщение отредактировал(а) Voldemar2004 - 9.3.2009, 20:18 -------------------- i_i (';') (V) ![]() |
||||
|
|||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
Ээээ, я не выспался или я чего-то не понимаю?
А что ты хочешь из него прочитать если он пустой? читай сколько хочешь, read вернет 0, поскольку файл пустой и ничего не прочиатно...вопрос сводится к тому как прочитать количество байт меньше нуля из файла? ![]() Это сообщение отредактировал(а) azesmcar - 9.3.2009, 20:48 |
|||
|
||||
Voldemar2004 |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
![]() Добавлено через 3 минуты и 56 секунд Просто в задании написано
Или по-русски: 1. создать файл с помощью open() 2. записать в него что-то 3. определить количество символов (один символ - один байт) 4. и прочитать на n-ое количество символов меньше -------------------- i_i (';') (V) ![]() |
||||||
|
|||||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
5. если количество байт меньше n, вывсти ошибку ![]() размер файла и другую информацию о нем дает системный вызов stat (man 2 stat) и функцию fcntl посмотри.. думаю так задание решается |
|||
|
||||
nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 4 Всего: 181 |
Voldemar2004, у нас специальный раздел по программированию в никсах есть
Модератор: перенесено из "*NIX системы: Общие вопросы" Это сообщение отредактировал(а) nickless - 10.3.2009, 16:19 -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
Roman2010 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 9.4.2009 Репутация: нет Всего: нет |
#include <stdio.h>
#include <sys/types.h> #include <unistd.h> int main(void) { size_t size; int fd[2]; char read_buffer[5]=""; char write_buffer[15]="Hello, world!"; /* Создание pipe */ if (pipe(fd)<0) { /* Если создать pipe не удалось - вывод сообщения на экран и прекращение работы */ printf("Can\'t create pipe\n "); return 0; } if ((size=write(fd[1],write_buffer,15))<0) { printf("Can\'t data write\n"); return 0; } if ((size=read(fd[0],read_buffer,5))<1) { printf("Can\'t data read\n"); return 0; } printf("Read : %d byte\n",size); printf("Buffer : %s\n",read_buffer); return 0; } |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |