1

大家晚上好!

我正在minix 3.2.1上做作业,我被要求创建一个新的系统调用 my_rmdir,它的作用与rmdir完全相同,但也会打印已删除目录的名称。另外我应该修改系统的源代码,所以当我给出rmdir命令时,系统应该调用我自己的do_myrmdir 函数,而不是调用 do_rmdir函数

过去,我使用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函数,根据用户权限,它请求rmdirunlink命令。不同之处在于unlink可以做一些危险的事情,所以它仅供管理员使用。

于 2014-08-11T19:01:21.060 回答