1

ターミナルからサーバー実行可能ファイルを起動する必要があります。バックグラウンドでwineを実行しています(これらの実行可能ファイルはWindows用であるため)。ターミナルから通常どおり起動すると、問題なく動作します。

現在、CGI (bash) スクリプトを作成し、Web サイトからサーバーを起動しようとしていますが、スクリプトはプロセスを起動しません。ワインと関係があると思ったのですが、いいえ、スクリプトはプロセスをまったく起動しません。

そのシステムを Ubuntu 12.04.1 LTS で構築しています。その後、スクリプトは Debian サーバーに送られます。

質問は、CGI スクリプトからバックグラウンド プロセスを実行することさえ可能ですか? はいの場合、どのように説明していただけますか?

4

1 に答える 1

0

CGIプログラムは他のプログラムと似ていますが、高速に実行され、CGI プロトコル (特に stdout 出力に関して) に従う必要がある点が異なります。

他の Linux プログラムと同様に、 fork(2)execve(2)などのシステムコールを使用して、(システムの制限と許可に従って) プロセスを実行できます。

Advanced Unix Programming abd Advanced Linux Programmingのような優れた Unix プログラミングの本を読むことをお勧めします。ここですべてを数分で教えることはできません。

ライブラリsystem(3)およびpopen(3)関数を使用してプロセスを実行することもできます (もちろん、これらの関数は GNU 内のシステムコールを使用して実装されますlibc) 。

CGI のステートレス プロパティを忘れないでください。代わりにFastCGIまたは SCGIを使用することを検討してください。

( wineCGI から開始されたプログラムは、通信するX11 サーバーがないなどの理由で失敗する可能性があります。C# プログラムの場合は、Linux 上のMonoを検討してください)。

もう 1 つの可能性は、ある VM で Windows を実行し、CGI をそのような仮想化された Windows プログラムと対話させることです。Windowsを知らないので、そのようなアプローチの問題についてはわかりません。

于 2012-10-14T19:27:58.437 に答える