The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (C/C++)
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Segmentation fault в fopen, rumkin (ok), 28-Дек-08, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


3. "Segmentation fault в fopen"  +/
Сообщение от rumkin (ok), 29-Дек-08, 23:57 
Большое спасибо. А может segfault вылетать не при закрытии файла, а при открытии?

Ответить | Правка | Наверх | Cообщить модератору

4. "Segmentation fault в fopen"  +/
Сообщение от vic (??), 30-Дек-08, 00:48 
>Большое спасибо. А может segfault вылетать не при закрытии файла, а при
>открытии?

в общем нет, читайте man fopen
там описаны все ошибки которые возвращает эта функция устанавливая возвращаемый указатель в NULL, ошибка в таком случае будет указана в переменной errno.

И еще, сразу отучайтесь считать что есть ошибка в системном вызове или в компиляторе, вероятность подобного 0.0000001%, и 99.9% что проблема в вашем коде.

ЗЫ если в fopen случится segfault, то вы скорее об этом узнаете обнаружив что все зависло или ядро напишет в консоль "паника, паника, паника" и убьется :)

Ответить | Правка | Наверх | Cообщить модератору

5. "Segmentation fault в fopen"  +/
Сообщение от angra (ok), 30-Дек-08, 00:58 
Маловероятно, если бы была ошибка в системном open, то ваша система вообще бы не загрузилась :)
Воспользуйтесь strace или gdb и увидите на каком именно моменте происходит вылет. Для примера я добавил printf("fopen done\n"); между fopen и fclose и запустил с strace:
open("text.txt", O_RDONLY)            = -1 ENOENT (No such file or directory)
write(1, "fopen done\n"..., 11fopen done
)         = 11
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
Как видим open отработал и вернул код ошибки, а вылет произошёл уже позже, когда пытались закрыть неинициализированный хендлер.
Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

6. "Segmentation fault в fopen"  +/
Сообщение от Michelnok (??), 30-Дек-08, 02:08 
>Большое спасибо. А может segfault вылетать не при закрытии файла, а при
>открытии?

Попробуйте передать в fopen мусор вместо указателя на имя файла.

Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру