anonymous
написал 8 августа 2005 года в 08:09 (818 просмотров)
Ведет себя
неопределенно; открыл 1814 темы в форуме, оставил 5575 комментариев на сайте.
Приветствую.
Написал маленький CGI-скрипт на C (мой первый скрипт :)) и натолкнулся на интересную проблему:
~~
sd = socket();
….
fprintf(stdout, «some string»);
fprintf(stdout, «some string2»);
…
connect();
…
fprintf(stdout, «some string3»);
…
printf(«Content-Type: text/html\n\n»);
…
~~
'tcpdump-ом' заметил что web-сервер(thttpd/2.25b) шлет строки «some string» и «some string2» в своих ответах. Почему это проявляется?
Спасибо!
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
А помоему писать CGI на сях это минимум извращение ;o)
Зачем если есть специально заточенные для этого языки..
потому, что вывод stderr на уровне сервера присоединяется к stdout.
таким образом, получается то, что ты и видишь — скрипт выводит все свои данные в html-страничку.
извращение — это использовать не те инструменты, которые наиболее точно удовлетворяют потребностям.
таким образом, выбор C как средство написания CGI приложений может быть оправдан. правда, если такие требования по скорости работы, то может проще несколько просто-напросто написать демон, который самостоятельно будет обрабатывать необходимый минимум http-функциональности.
ps: ну и не надо забывать, что каждый сам себе находит трудности ;))
ну, или может есть такое веское слово «ТЗ»….
я тут попробовал поразвлекатся с php… ну я скажу! проще уж на C — по крайней мере привычнее ;). Главное баги будут свои, родные — типа переполнения буфера или обращения по кривому адресу. А не опечатка в имени переменной (ещё лучше конфликт имён), или забытый $this-> в функции члене класса при обращении к другому члену.