cgi
Код: Выделить всё
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define HTTP_STATUS_405(a, n) do {\
if (strcmp(getenv("REQUEST_METHOD"), a)) {\
printf("Status: 405 Method Not Allowed\n"\
"Content-Type: text/xml; charset=\"utf-8\"\n"\
"Allow: %s\n\n"\
"<reason>Method %s is't allowed!</reason>", a, n);\
return -1;\
}\
} while (0)
#define HTTP_STATUS_400(f, a...) do {\
printf("Status: 400 Bad Request\n"\
"Content-Type: text/xml; charset=\"utf-8\"\n\n"\
"<reason>" f "</reason>", ##a);\
return -1;\
} while (0)
#define HEADER "Content-Type: text/plain\n\n"
#define OK(f, a...) printf("%s{\"result\":\"OK\",\"answer\":\"" f "\"}",\
HEADER, ##a)
int main(int argc, char *argv[])
{
HTTP_STATUS_405("GET", "POST");
system("/usr/bin/killall -2 av_server.out");
system("/usr/bin/killall -2 wis_streamer");
system("/usr/bin/killall -9 system_server");
if (system("cd /opt/ipnc && ./system_server&") != 0)
HTTP_STATUS_400("Can't run system_server");
OK("System_server running");
return 0;
}Скрипт запускается с web-страницы посредством JavaScript, должен перезапустить ряд сервисов и вернуть в JavaScript сообщение.
Скрипт отрабатывает, сервисы перезапускаются, но обратно результат не возвращается. На основании чего я решил, что скрипт отрабатывает - вывод в консоль, просматриваю через minicom, и после ручного обновления страницы я вижу изменённые данные.
При запуске через броузер скрипт отрабатывает, но никого выходного текста я не наблюдаю, вкладка находится в ожидании. Создаётся ощущение, что скрипт завис.
Вопрос - как добиться, что бы скрипт возвращал результат?
Спасибо.