• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Linuxのファイルハンドルとファイルディスクリプタの違い)

Linuxのファイルハンドルとファイルディスクリプタの違い

このQ&Aのポイント
  • Linuxのファイルハンドルとファイルディスクリプタについて質問があります。/proc/sys/fs/file-nrにはファイルハンドルに関する3つの値がありますが、ulimitで表示されるopen filesの値はファイルディスクリプタの最大値です。
  • ファイルハンドルはファイルを開く際にメモリ上に確保されるエリアであり、ファイルディスクリプタはオープンしたファイルに割り当てられた識別子です。
  • ulimitはユーザの制限であり、/proc/sys/fs/file-maxで設定されている以上の値をopen filesには指定できません。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.1

>ファイルハンドルはファイルを開く際にメモリ上に確保されるエリア、 >ファイルディスクリプタはオープンしたファイルに割り当てられた識別子という理解は間違ってるのでしょうか? 厳密な定義は知りませんが上記の理解であっていると思います。 ただし、ファイルハンドルと言う言葉はファイルをオープンするとOS内に確保されるエリアという意味以外に、オープンされたファイルを言語で扱う場合のオブジェクトという意味で使われることも多いです。 /proc/sys/fs/file-{max,nr} での数値はOS全体のもの。 ulimitで制限するのはそのシェルから起動する1つのプロセスでの上限です。 ulimitの上限で先に効いてくるのはシステム全体の値file-maxよりも、selectシステムコールで使うファイルディスクリプタビット列の長さ__FD_SETSIZE(普通は1024)でしょう。

すると、全ての回答が全文表示されます。

関連するQ&A