<function>
<fname>s_check_resource</fname>
<prototype>

int
s_check_resource( )

</prototype>
<explanation>

ファイルディスクリプタがいくつ開かれているかチェックするルーチン

</explanation>
<return>
now_open_filesがオープンできるファイルの最大の半分がオープンされたときに、−１を返し、それ以外のときに０を返す。
</return>
<details>
ファイルディスクリプタがオープンされるところには、int now_open_filesをカウントアップするコードを入れ、closeするところではカウントダウンする。

ウィンドウズのようにファイルディスクリプタが二種類ある場合は、それぞれのオープンファイル数を調べ、どちらかが半分を超したら−１を返す。どちらも半分以下であれば0を返すように作るとよい。

特に、ファイルディスクリプタのオープンの数に上限がない場合は、つねに0を返すように作る。

</details>
<history>
<renew "01/10/20">
この関数は、xl/lib/lisp/gc_task.cにてギャーベージコレクションを発生させるタイミングを決めるために使っている。
それでも、足りなくなる可能性はあるので、ファイルディスクリプタを開いた後、エラーをチェックし、EMFILE/EAGAINエラーが生じた場合は(*gc_stream)( )を呼び、システムコールを再実行するコードを入れてください。
(*gc_stream)は定義されていない場合もあるので、gc_stream==0をチェックしてください。
</history>
</function>