我需要从终端启动服务器可执行文件。它们在后台运行 wine(因为这些可执行文件适用于 Windows)。如果我从终端正常启动它们,它们可以正常工作。
现在我正在尝试制作 CGI (bash) 脚本并从网站启动服务器,但脚本不会启动进程。我认为它与葡萄酒有关,但不,脚本根本不会启动任何进程。
我在 Ubuntu 12.04.1 LTS 上构建该系统,之后脚本将进入 Debian 服务器。
所以,问题是:甚至可以从 CGI 脚本运行后台进程吗?如果是,请您解释一下如何?
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。
(通过wine
CGI 启动的程序可能会失败,例如因为它没有可与之通信的X11
服务器;对于 C# 程序,请考虑Linux 上的Mono)。
另一种可能性是在某些 VM 中运行 Windows,并让您的 CGI 与此类虚拟化 Windows 程序进行交互。不了解 Windows,我不知道这种方法的问题。