Форум программистов, компьютерный форум CyberForum.ru

С под Linux

Войти
Регистрация
Восстановить пароль
 
KOHTPOJIEP
7 / 7 / 4
Регистрация: 06.01.2016
Сообщений: 42
Завершенные тесты: 1
#1

Запись двух строк в отображение файла ( mmap ) - C Linux

28.12.2016, 12:46. Просмотров 311. Ответов 1

Доброго времени суток.
Мне нужно использовать mmap для организации общего файла для нескольких процессов.
Как записывать одну строку без проблем, я уже знаю:

C
1
2
3
4
5
6
7
    int fdFile = open("File.txt", O_RDWR | O_CREAT | O_TRUNC,  S_IRUSR | S_IWUSR);
    char* file;
    file = (char*)mmap(0, firstString.length()+secondString.length()-2, PROT_READ | PROT_WRITE, MAP_SHARED, fdFile, 0);
    lseek(fdFile,1,SEEK_SET);
    write(fdFile,"",firstString.length()-1);
    lseek(fdFile,0,SEEK_SET);
    sprintf(file,"%s",firstString.c_str());
Но, как только я пытаюсь добавить туда вторую строку (или хотя бы символ):

C
1
2
3
4
    lseek(fdFile,firstString.length(),SEEK_SET);
    write(fdFile,"",1);
    sprintf(file,"%c",'\n');
    munmap(file, firstString.size());
вместо первых символов записываются символы конца строки.
Ломаться начинает на
C
1
write(fdFile,"",1);
Подскажите, пожалуйста, где ошибка.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2016, 12:46     Запись двух строк в отображение файла ( mmap )
Посмотрите здесь:

Чтение строк из файла C Linux
Подсчитать число строк из файла передающегося через malloc C Linux
Использование mmap() для получения/отправки через сокет C Linux
C Linux Из одного файла считать часть информации и записать в выбранное место второго файла
Работа процессов с общим файлом (mmap) C Linux
C Linux Файлы. Создание и размещение небольшого текста, создание двух дочерних процессов, вывод результи- рующего файла на экран
Запись-считывание строки из бинарного файла C Linux
C Linux Программа, выдающая на экран содержимое файла порциями по N строк
C Linux Реализовать метод mmap для драйвера
Отображение файла по заданному адресу C Linux
Порождение процесса; запись и чтение из файла C Linux
Динамический массив строк: исключить из файла строки с длиной, больше заданной C Linux

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1743 / 1086 / 71
Регистрация: 13.09.2011
Сообщений: 3,109
30.12.2016, 10:28     Запись двух строк в отображение файла ( mmap ) #2
Вы уж определитесь, через отображение вы собираетесь писать или через обычное api. Здесь у вас абсолютная мешанина и в итоге вы запутались в смещениях.
Yandex
Объявления
30.12.2016, 10:28     Запись двух строк в отображение файла ( mmap )
Ответ Создать тему
Опции темы

Текущее время: 06:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru