■掲示板に戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50



レス数が1000を超えています。残念ながら全部は表示しません。

くだらない質問はここに書き込め!なんでもアリ13

253 :246 :02/09/05 13:00
>>251
そゆこと。system call 内で "." を消せないようにはじいている。
もし消せたならば224の言うとおりリンク数は1になるだろうけど、データ構造に
矛盾が生じて変になるだろうね。

システムコール ufs_rmdir() の中でやってることは、
 "." やマウントされているディレクトリならばエラーを返す(EINVAL)
 link数が2じゃなければエラーを返す(ENOTEMPTY)
 ディレクトリの中になにかファイルがあればエラーを返す(ENOTEMPTY)
 親ディレクトリのエントリからそのディレクトリエントリを消して、親ディレクトリのリンクを-1する
 消すディレクトリのリンクを-2する。(リンク数は0になる)
 ディレクトリ自体を破棄する。

他にもパーミッション関係とかチェックしてるけど省略。
まだ興味があるならkernelのsourceでも読んでみれ。getcwd.cも参考になるかも。


掲示板に戻る 全部 前100 次100 最新50

read.cgi ver5.26+ (01/10/21-)