gpt4 book ai didi

c - 系统调用: Interpreting ktrace output

转载 作者:行者123 更新时间:2023-11-30 19:38:10 25 4
gpt4 key购买 nike

在为即将到来的考试学习时,我遇到了以下问题:

用户尝试执行的 UNIX 命令是什么?标有 * 的行发生了什么?出了什么问题?

我发现用户可能想要执行类似的操作

ln -s dir ls

但这并没有给我预期的输出。

enter image description here

最佳答案

所以我自己回答了这个问题。

用户尝试执行的命令是 ln ls dir ,其主要目标是使用单词 dir 作为 ls 命令的“别名”。

这是错误的,因为用户尝试在一个不授予他写入权限的目录中操作(最有可能是 /bin 目录),这意味着他无法创建文件(硬链接(hard link))在此目录中。

通过使用 ktrace/kdump 我成功地重现了输出:

  [...]
*77019 ln CALL stat(0x7fffffffebab,0x7fffffffd668)
77019 ln NAMI "test/ls"
77019 ln RET stat 0
*77019 ln CALL lstat(0x7fffffffebb3,0x7fffffffd668)
77019 ln NAMI "test/dir"
77019 ln RET lstat -1 errno 2 No such file or directory
*77019 ln CALL stat(0x7fffffffebb3,0x7fffffffd668)
77019 ln NAMI "test/dir"
77019 ln RET stat -1 errno 2 No such file or directory
*77019 ln CALL lstat(0x7fffffffebb3,0x7fffffffd668)
77019 ln NAMI "test/dir"
77019 ln RET lstat -1 errno 2 No such file or directory
*77019 ln CALL linkat(AT_FDCWD,0x7fffffffebab,AT_FDCWD,0x7fffffffebb3,0x400)
77019 ln NAMI "test/ls"
77019 ln NAMI "test/dir"
77019 ln RET linkat -1 errno 13 Permission denied
[...]
*77019 ln CALL exit(0x1)

标有星号的步骤解释如下:

第一个系统调用是收集原始文件 (´ test/ln ) 的 inode 信息。接下来,它检查目标文件 ( test/dir ) 是否已存在,无论是作为命名文件 ( stat ) 还是作为符号链接(symbolic link) ( lstat )。

因为情况并非如此,该进程尝试链接文件( linkat - 在原始示例中: link )。正如前面提到的,由于权限的原因,这会出错。

该过程最终以负退出代码结束。

关于c - 系统调用: Interpreting ktrace output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38591667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com