在 Web 服务器端使用用 C 编写的 CGI 脚本的缺点?

Disadvantages of using CGI scripts written in C for web server-side?

我目前正在使用启用了 CGI 脚本的 Apache HTTP 服务器和用 C 编写的 CGI 脚本处理请求,读取 HTTP 查询字符串和 inserting/selecting 根据需要从 SQLite 数据库中获取。

据我所知,这是一个非常不常见的设置,大多数人用 Perl 或其他语言编写 CGI 脚本,或者根本不使用 CGI 脚本。我会使用其他东西只是为了成为主流,但我很了解 C 中的 CGI 脚本并且当时不想处理新东西。人们告诉我使用用 C 编写的 CGI 脚本是个坏主意,但当我问为什么时,他们不知道。为什么它不好,因为我正在为一个小程序做这件事?

我认为如果它是一个没有太多棘手代码的简单脚本就可以了。人们可能有的一些反对意见如下:

  • 安全性:与解释型语言相比,C 没有很多内置的制衡机制。什么会导致解释器在其他语言中抛出错误可能意味着缓冲区溢出,数据泄漏或在 C 中执行任意代码。

  • 字符串处理:与脚本语言相比,这在 C 中通常更棘手且更容易出错(尽管另一方面你没有得到人尝试对所有内容使用正则表达式,无论它们有多适合 :P).

  • 开发工作与回报:许多 CGI 脚本的性能并不关键,大多数 I/O 受限,因此优化 CPU 利用率不会给你带来太多,或者包含简单的胶水逻辑。用脚本语言编写这样的脚本可能会更快。