связать процесс lighttpd со следующими включенными функциями:
strace -f -tt -p PIDOFLIGHTTPD
Вы получите вывод, который показывает каждый системный вызов, сделанный lighttpd и CGI. Временная метка в микросекундах должна указывать, когда CGI возвращает данные, а когда lighttpd записывает их обратно клиенту. Это также даст ответ, если проблема связана с восходящим потоком (если вы видите, что lighttpd отправляет данные почти мгновенно и т. Д.).
Когда я писал cgi на Perl, это был параметр, который мне приходилось включать в сценарий Perl. В Perl это было $ | = 1
. Вероятно, вам потребуется сделать аналогичный вариант на C. Вместо этого вы можете спросить Stack Overflow .
Lighttpd буферизует вывод по умолчанию.
Вам нужно server.stream-response-body = 1
, как обсуждалось здесь. Официальные документы: https://redmine.lighttpd.net/projects/lighttpd/wiki/Server_stream-response-bodyDetails