Есть сервер. Работает на локалхосте. Он создал слушающий сокет. Получив что-то на вход, он записывает в ответ msg. Клиент msg получает и отображает. Вот код:
char *msg = "HTTP/1.1 200 OK\n\n\n<h1>This is site</h1>";
/*...*/
read(socket_accept, buf, SIZE);
/*...*/
fprintf(stdout, "This is stdout\n");
write(socket_accept, msg, strlen(msg));
fprintf(stderr, "It's stderr\n");
Всё работает.
Но стоит увеличить третий параметр в write, например так:
write(socket_accept, msg, strlen(msg)+100);
Происходит интересное. Если клиент консольный - вроде бы всё нормально. Однако, если обратиться через браузер (127.0.0.1:port), то на страницу выдачи сначала попадает содержимое msg, затем результаты двух fprintf (начиная с первого), затем N одинаковых нераспознаваемых символов (примерно 100 минус длина результатов fprintf).
Что здесь происходит и почему?