1

皆さんこんばんは!

私はminix 3.2.1で宿題をしています。ここで、 rmdirとまったく同じように機能するだけでなく、削除されたディレクトリの名前も出力する新しいシステム コール my_rmdirを作成するよう求められます。また、システムのソース コードを変更することになっているので、rmdirコマンドを実行すると、システムはdo_rmdir関数を呼び出す代わりに、独自のdo_myrmdir関数を呼び出す必要があります。

過去に、 mkdirコマンドで同じ宿題をしたことがありますが、 mkdirが適切に宣言された minix スタイルであり、変更を加えた ため、すべてが単純でした。

/usr/src/servers/vfs/proto.h
/usr/src/servers/vfs/open.c
/usr/src/servers/vfs/request.c
/usr/src/servers/vfs/table.c
/usr/include/minix/callnr.h

そしてすべてがうまくいきました。しかし、今では、NETBSD コードの注入のせいで、少し道に迷っていると思います。

また、最初に知識がなく、次に行う必要がある変更が非常に小さいため、新しいシステムコールをゼロから作成することもポイントではありません。
一番の問題は、元のdo_rmdirが宣言されている場所と、それがrmdirコマンドでどのように接続されているかがわからないことです。

/usr/src/servers/vfs/table.cファイルの 58 行目

do_unlink,  /* 40 = rmdir   */

もっと混乱させる

助けやアイデアはありますか?

さらに詳しい情報が必要な場合は、お問い合わせください。

私はフォーラムに不慣れです。適切に質問しようとしました。ご理解いただきありがとうございます。

4

1 に答える 1

0

はい、分かりました!

rmdirコマンドはdo_unlink関数を呼び出し、ユーザーの権限に基づいて、rmdir コマンドまたは unlink コマンドのいずれかを要求ます。違いは、リンク解除は危険な行為を行う可能性があるため、管理者のみが使用できることです。

于 2014-08-11T19:01:21.060 に答える