UNIX データベースサーバーをバックグラウンドで実行し、現在のセッションから独立して稼働させるには、データベースサーバーを「デーモン」として実行します。
データベースサーバーをバックグラウンドで実行するのに '&' を使用しない。データベースサーバーをバックグラウンドで実行するのに UNIX の & (アンパサンド) コマンドを使用しても機能しません。サーバーがただちに停止するか応答しなくなります。データベースサーバーはデーモンとして実行してください。
同様に、一般的な fork()-exec()
シーケンスを使用してプログラムの中からサーバーをバックグラウンドで起動しようとしても機能しません。これを行うには、データベースサーバーオプションのリストに -ud オプションを追加します。
UNIX データベースサーバーは、次のいずれかの方法でデーモンとして実行できます。
データベースサーバーの起動時に、-ud オプションを使用する。次に例を示します。
dbsrv12 -ud demo |
dbspawn ツールを使用してデータベースサーバーを起動する。次に例を示します。
dbspawn dbsrv12 demo |
dbspawn を使用することの利点は、デーモンが起動し、要求を受け入れる状態になったことを確認するまで dbspawn プロセスが停止しないことです。何らかの理由でデーモンの起動が失敗した場合、dbspawn の終了コードは 0 以外の値になります。
-ud オプションを使用してデーモンを直接起動したときは、dbeng12 コマンドと dbsrv12 コマンドがデーモンプロセスを作成し、(終了して次のコマンドを実行できるように) すぐに返します。その後、デーモンがそれ自体を初期化するか、コマンドで指定されたデータベースを開こうとします。
データベースサーバーを使用できる 1 つ以上のアプリケーションでデーモンが確実に実行されるようにしたい場合、アプリケーションの起動前にデーモンを実行する dbspawn を使用します。次の例では、csh スクリプトを使用してこれをテストする方法を示します。
#!/bin/csh # start the server as a daemon and ensure that it is # running before you start any applications dbspawn dbsrv12 demo if ( $status != 0 ) then echo Failed to start demo server exit endif # ok, now you can start the applications ... |
次の例では、sh スクリプトを使用して、アプリケーションの起動前にデーモンが実行中であるかどうかをテストします。
#!/bin/sh # start the server as a daemon and ensure that it is # running before you start any applications dbspawn dbsrv12 demo if [ $? != 0 ]; then echo Failed to start demo server exit fi # ok, now you can start the applications ... |
C プログラムの中からデーモンを生成する。次に例を示します。
... if( fork() == 0 ) { /* child process = start server daemon */ execl( "/opt/sqlanywhere12/bin/dbsrv12", "dbsrv12", "-ud", "demo" ); exit(1); } /* parent process */ ... |
-ud オプションが使用されていることに注意してください。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |