Вылетает Cgi…
Я пишу CGI на С++ (Данный проект подходит к концу и переходить на другие языки или технологии я не собираюсь). Так как проблема достаточно необычная - я не был уверен, стоит ли задавать такой сложный вопрос на форуме. Но все же решил, может кто-то сможет мне помочь.
Вся проблема в том, что CGI некорректно завершается. А именно: Сам код написан абсолютно правильно, но при запуске, CGI вылетает, при этом в браузере отображается часть страницы(HTML), которую сгенерировал данный CGI. При отладке я заметил, что данный CGI вылетает именно на return 0;, который находится в самой функции main(); (т.е. при выходе из функции main()) Самое интересное, если я вместо return 0 использую exit(0), то все работает правильно. Т.е. ничего не вылетает, и все отображается правильно.
В чем может быть здесь проблема?
Заранее благодарен за ответы!
Цитата:
Originally posted by birkoff
Добрый день!
Я пишу CGI на С++ (Данный проект подходит к концу и переходить на другие языки или технологии я не собираюсь). ..... При отладке я заметил, что данный CGI вылетает именно на return 0;, который находится в самой функции main(); (т.е. при выходе из функции main()) Самое интересное, если я вместо return 0 использую exit(0), то все работает правильно. Т.е. ничего не вылетает, и все отображается правильно.
В чем может быть здесь проблема?
Добрый день!
Я пишу CGI на С++ (Данный проект подходит к концу и переходить на другие языки или технологии я не собираюсь). ..... При отладке я заметил, что данный CGI вылетает именно на return 0;, который находится в самой функции main(); (т.е. при выходе из функции main()) Самое интересное, если я вместо return 0 использую exit(0), то все работает правильно. Т.е. ничего не вылетает, и все отображается правильно.
В чем может быть здесь проблема?
Ты сам и ответил. Нужно ставить exit.
return дергает стек, на котором уже
ничего не осталось и идет на случайный адрес...
CGI работает по принципу вызова exe-файла,
а не по принципу вызова подпрограммы -
в этом твоя ошибка.