1

我需要从终端启动服务器可执行文件。它们在后台运行 wine(因为这些可执行文件适用于 Windows)。如果我从终端正常启动它们,它们可以正常工作。

现在我正在尝试制作 CGI (bash) 脚本并从网站启动服务器,但脚本不会启动进程。我认为它与葡萄酒有关,但不,脚本根本不会启动任何进程。

我在 Ubuntu 12.04.1 LTS 上构建该系统,之后脚本将进入 Debian 服务器。

所以,问题是:甚至可以从 CGI 脚本运行后台进程吗?如果是,请您解释一下如何?

4

1 回答 1

0

CGI程序与任何其他程序一样,除了它应该快速运行并遵循 CGI 协议(特别是关于 stdout 输出)。

与任何其他 Linux 程序一样,您可以(受系统上的限制和权限)使用系统调用(例如fork(2)execve(2)等)运行进程。

我建议阅读一本好的 Unix 编程书籍,例如Advanced Unix Programming abd Advanced Linux Programming。我们不能在几分钟内教完所有这些。

您还可以使用库system(3)popen(3)函数运行进程(当然这些函数是使用 GNU 内部的系统调用实现的libc

不要忘记 CGI 的无状态属性;您可以考虑改用FastCGI或 SCGI。

(通过wineCGI 启动的程序可能会失败,例如因为它没有可与之通信的X11 服务器;对于 C# 程序,请考虑Linux 上的Mono)。

另一种可能性是在某些 VM 中运行 Windows,并让您的 CGI 与此类虚拟化 Windows 程序进行交互。不了解 Windows,我不知道这种方法的问题。

于 2012-10-14T19:27:58.437 回答