Хотя в C нет эквивалентных возможностей, подобных Reflection API или Annotation, все же можно реализовать то, что вам нужно, но вам потребуется выполнить тяжелую работу.
В основном то, что я Я получаю, что вы хотите:
Выяснить, какой тип ресурса
В зависимости от типа, который вы хотите выполнить его с помощью некоторого скрипта и отправьте его вывод.
Для части 1 вы можете основывать его на расширении ресурса. Вы можете использовать системные типы MIME или создать собственное сопоставление, например:
struct Mapping {
char *extension;
char *command;
};
struct Mapping mapping[] = {
{"jsp", "<command to run jsp>"},
{"sh", "/bin/bash %1"}
};
Для части 2, когда ваш сервер получает запрос, ему необходимо извлечь расширение ресурса и проверить его. сопоставление, чтобы увидеть, какая запись соответствует расширению, получите поле command
и выполните команду (после замены аргументов, если они есть), используя вызов system()
.
Обратите внимание, что в качестве присваивания это отличный способ узнать много нового, но если вы запустите это в производство, это будет огромная дыра в безопасности!