Открываю файл системным вызовом open() и получаю к нему доступ с помощью mmap(). Так как оставшаяся в странице память забивается нулями, я могу считать данные циклом вроде
for (; *c; c++)
{
// сделать что-то с памятью по адресу c
}
Всё бы хорошо, но вот как быть с ситуацией, когда размер файла совпадает с размером страницы? Тогда нулей для того, чтобы выйти из цикла, не будет. Пытался mmap-ить на один байт больше, но попытка доступа к этой памяти приводит к SIGBUS, из которого не получается выйти из цикла, в результате чего программа зависает.