gpt4 book ai didi

c - 在 Linux 服务器上运行 C 程序

转载 作者:太空狗 更新时间:2023-10-29 16:52:30 25 4
gpt4 key购买 nike

这个问题我肯定已经回答了,不过老实说我不知道​​如何通过搜索来提问。所以请原谅我的知识匮乏,因为这是我在计算机科学领域真正缺乏知识的唯一地方。

我如何/是否可能在托管服务器上运行 C 程序。到我可以去的地方 http://mysite.com/myspecialcprogram.c它会运行吗?或者更好的是,我可以在多大程度上使用像 C 这样的高级语言来为我的服务器编程?

还应该注意的是,我有一个运行 apache 的专用 Linux 机器。所以我有完全访问权限。

最佳答案

一种方法是将其作为 CGI 运行,正如@paddy 已经提到的那样。但是,程序会运行缓慢,启动时间长。

另一种方法是使用 FastCGI 运行它.它会快得多,您只需要对代码进行一些修改即可使其工作,例如作为 CGI:

#include <stdio.h>
#include <time.h>

int main(int argc, char **argv)
{
time_t timer;
char time_str[25];
struct tm* tm_info;

time(&timer);
tm_info = localtime(&timer);
strftime(time_str, sizeof(time_str), "%Y/%m/%d %H:%M:%S", tm_info);

/* Without this line, you will get 500 error */
puts("Content-type: text/html\n");

puts("<!DOCTYPE html>");
puts("<head>");
puts(" <meta charset=\"utf-8\">");
puts("</head>");
puts("<body>");
puts(" <h3>Hello world!</h3>");
printf(" <p>%s</p>\n", time_str);
puts("</body>");
puts("</html>");

return 0;
}

编译它:

$ # 'cgi-bin' path may be different than yours
$ sudo gcc example.c -o /usr/lib/cgi-bin/example
$ wget -q -O - http://localhost/cgi-bin/example
<!DOCTYPE html>
<head>
<meta charset="utf-8">
</head>
<body>
<h3>Hello world!</h3>
<p>2013/01/30 08:07:29</p>
</body>
</html>
$

使用 FastCGI:

#include <fcgi_stdio.h>
#include <stdio.h>
#include <time.h>

int main(int argc, char **argv)
{
time_t timer;
char time_str[25];
struct tm* tm_info;

while(FCGI_Accept() >= 0) {
time(&timer);
tm_info = localtime(&timer);
strftime(time_str, sizeof(time_str), "%Y/%m/%d %H:%M:%S", tm_info);

/* Without this line, you will get 500 error */
puts("Content-type: text/html\n");

puts("<!DOCTYPE html>");
puts("<head>");
puts(" <meta charset=\"utf-8\">");
puts("</head>");
puts("<body>");
puts(" <h3>Hello world!</h3>");
printf(" <p>%s</p>\n", time_str);
puts("</body>");
puts("</html>");
}

return 0;
}

编译它:

$ # Install the development fastcgi package, I'm running Debian
$ sudo apt-get install libfcgi-dev
...
$
$ # Install Apache mod_fcgid (not mod_fastcgi)
$ sudo apt-get install libapache2-mod-fcgid
...
$
$ # Compile the fastcgi version with .fcgi extension
$ sudo gcc example.c -lfcgi -o /usr/lib/cgi-bin/example.fcgi
$ # Restart Apache
$ sudo /etc/init.d/apache2 restart
Restarting web server: apache2 ... waiting .
$
$ # You will notice how fast it is
$ wget -q -O - http://localhost/cgi-bin/example.fcgi
<!DOCTYPE html>
<head>
<meta charset="utf-8">
</head>
<body>
<h3>Hello world!</h3>
<p>2013/01/30 08:15:23</p>
</body>
</html>
$
$ # Our fastcgi script process
$ ps aux | grep \.fcgi
www-data 2552 0.0 0.1 1900 668 ? S 08:15 0:00 /usr/lib/cgi-bin/example.fcgi
$

在poth程序中,有:

puts("Content-type: text/html\n");

这将打印:

Content-type: text/html[new line]
[new line]

没有它,Apache 将抛出 500 个服务器内部错误。

关于c - 在 Linux 服务器上运行 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14596199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com